2065 Commits

Author SHA1 Message Date
Emux
54b7884fa3 0.11.1 2019-04-12 19:45:34 +03:00
Emux
e5bc7c7564 OpenGL ES 3.0 is supported with Android 4.3 (API level 18) and higher, fix #713 2019-04-12 11:29:48 +03:00
Emux
cf49591d4f Update changelog 2019-04-10 12:49:35 +03:00
Andrea Antonello
71f94f3f79 MBTiles raster tile source (#708) 2019-04-10 12:49:35 +03:00
Gustl22
db6be82ce2 S3DBUtils: adjust coordinate system (RHS to LHS) (#710) 2019-04-10 12:46:15 +03:00
Gustl22
ba65786b5a GeometryUtils improvements (#709) 2019-04-10 12:41:50 +03:00
Emux
036d63c9dd Update changelog 2019-04-02 20:11:44 +03:00
Emux
07e86d24f6 OpenMapTilesMvtTileSource: update URL 2019-04-02 20:10:48 +03:00
Emux
2cbd92a01b 0.11.0 2019-03-25 17:00:00 +02:00
Emux
ba0e737c7b Format render themes 2019-03-25 14:59:53 +02:00
Emux
45b59eb6df Render theme improvements 2019-03-25 14:54:40 +02:00
Emux
a7d50fa8fa OpenGL ES 3.0: sanitize Android #646 2019-03-23 14:48:27 +02:00
Emux
2f27803fc5 Render theme callback improvements, #274 2019-03-22 13:22:11 +02:00
Emux
71a4ba1c19 Map scaling improvements, fix #401 2019-03-22 11:02:58 +02:00
Gustl22
271cab1212 GeometryUtils: fix clockwise calculation (#704) 2019-03-20 15:25:31 +02:00
Gustl22
1051aacc7c GeometryBuffer minor improvements (#703) 2019-03-20 15:16:33 +02:00
Gustl22
fb8e6dab20 GeometryBuffer: add removeLastPoint (#702) 2019-03-20 15:11:41 +02:00
Gustl22
4e37ae26c9 Tessellator: improve docs (#701) 2019-03-20 15:07:40 +02:00
Gustl22
905f27b2c2 ExtrusionsTest sample improvements (#699) 2019-03-20 15:05:02 +02:00
Emux
9d6935cf48 BucketRenderer: fix typo, #697 2019-03-12 09:14:07 +02:00
Emux
6b0e521c75 Samples improvements 2019-03-08 09:20:11 +02:00
Emux
c906c468f8 Fix AnimatorTest sample, fix #696 2019-03-07 11:08:16 +02:00
Gustl22
f7272dcdcd Render themes: allow HSV colors for S3DB (#695) 2019-03-07 10:39:13 +02:00
Emux
14283ff5cc Merge pull request #694 from Gustl22/color_mod
ColorUtil modHsv: keep alpha
2019-03-07 09:46:10 +02:00
Gustl22
e4608b17c3 ColorUtil modHsv: keep alpha 2019-03-06 21:15:27 +01:00
Emux
d81c32b97c Merge pull request #693 from Gustl22/transform_colors
S3DB: modify colors in theme
2019-03-06 18:49:30 +02:00
Gustl22
e69c5724bf S3DBUtils.getMaterialColor: use 'switch case' (#692) 2019-03-06 18:36:40 +02:00
Gustl22
da0a5673d2 vtm-playground: improve shadow sample (#691) 2019-03-06 15:45:10 +02:00
Gustl22
4cdd2a2bfb S3DB: modify colors in theme 2019-03-06 10:08:48 +01:00
Gustl22
80afa86ae4 S3DB: allow modify material colors from theme (#690) 2019-03-06 09:09:28 +02:00
Gustl22
311cc19134 Sun: set progress with custom time (#689) 2019-03-06 08:55:25 +02:00
Emux
9809398517 Update Gradle plugin 2019-03-05 11:17:13 +02:00
Gustl22
7498d58878 BuildingLayer: tag-transform color values (#683) 2019-03-05 11:11:45 +02:00
Gustl22
73e17ef4a1 vtm-playground: ExtrusionsTest (#684) 2019-03-05 09:55:11 +02:00
Gustl22
bda48858ba Poi3D models: correct flip axis on loading (#687) 2019-03-05 09:48:34 +02:00
Emux
4d35b72b25 Update Changelog.md 2019-03-04 15:56:03 +02:00
Emux
8faa374303 Update docs 2019-03-04 11:23:29 +02:00
Emux
573ec687ac Add issue template 2019-03-04 11:06:37 +02:00
Emux
4b685819d1 Update readme 2019-03-04 11:00:45 +02:00
Emux
889ce83bdf Update contributing guide 2019-03-04 10:54:40 +02:00
Emux
30304a8ddc Update README.md 2019-03-02 16:03:14 +02:00
Emux
4b12e28f3c Fix MapEventLayerTest 2019-03-02 15:16:40 +02:00
Emux
f92fc4b405 Enable physical fling and fling on rotation / scale 2019-03-02 14:45:10 +02:00
Emux
b5076c9cd2 Enable placement of labels / symbols on polygons (after overzoom) 2019-03-02 14:45:10 +02:00
Emux
5eda5b78a6 Move some test classes in vtm-tests, fix #682 2019-03-02 11:44:10 +02:00
Gustl22
207993a6e2 Tag transform improvements (#678) 2019-03-02 11:37:38 +02:00
telemaxx
4162d9b488 Samples: marker layer with labels (#681) 2019-03-01 21:09:59 +02:00
Emux
8bfca4917a Update CONTRIBUTING.md 2019-03-01 18:36:20 +02:00
Emux
2aedfaba34 Update CONTRIBUTING.md 2019-03-01 18:31:48 +02:00
Emux
4811abb3d3 Merge pull request #677 from Gustl22/rendertheme_docs
Improve Rendertheme docs
2019-03-01 18:18:16 +02:00
Gustl22
f6e51898b7 Improve Rendertheme docs 2019-02-27 18:58:24 +01:00
Emux
12070cee74 Tag transform: simplify naming, #420 2019-02-27 18:53:04 +02:00
Emux
6af46cf8cc Merge pull request #675 from Gustl22/buildinglayer_rendertheme
Fix Rendertheme set after creation of BuildingLayer
2019-02-26 17:39:15 +02:00
Gustl22
5b58e5282b Fix Rendertheme set after creation of BuildingLayer 2019-02-26 12:13:46 +01:00
Emux
0e54dc715c Samples improvements 2019-02-26 10:13:20 +02:00
Gustl22
627a316e4d ColorUtil: fix modHSV, Color: HSV (#673) 2019-02-25 20:34:35 +02:00
Emux
2efa8808c0 Update Changelog.md 2019-02-24 13:21:20 +02:00
Gustl22
b9c7d4cbb1 OverpassTileDecoder: fix unexpected roof:direction (#674) 2019-02-23 10:53:15 +02:00
Emux
f348296a8c BuildingLayer: add shadow parameter #575 2019-02-21 20:14:55 +02:00
Emux
7cfbe1c115 Map: simplify updateMap 2019-02-21 13:07:24 +02:00
Gustl22
31077cb637 Samples for Shadow and Overpass (#670) 2019-02-21 11:27:12 +02:00
Emux
8e685b7ebb Merge pull request #671 from Gustl22/readme
Update Readme.md
2019-02-21 10:25:46 +02:00
Emux
ca3871eb61 Merge pull request #669 from Gustl22/sun
Sun: fix color update on init equal progress
2019-02-21 09:58:59 +02:00
Gustl22
ebe4095438 Update Readme.md 2019-02-21 03:34:28 +01:00
Gustl22
ec50f11e3e Sun: fix color update on init equal progress 2019-02-21 00:32:44 +01:00
Emux
446d0133cf Update changelog 2019-02-20 20:24:01 +02:00
Gustl22
b4a98ef1a9 Shadow for buildings (#668)
Co-authored-by: Izumi Kawashima <schedul.xor@gmail.com>
2019-02-20 20:11:57 +02:00
Emux
ba123910a4 Update changelog 2019-02-20 10:53:54 +02:00
Gustl22
23d65486e6 Overpass tile source (#665) 2019-02-20 10:53:54 +02:00
Gustl22
c0c8abe3a7 TagSet: set from other TagSet 2019-02-20 09:51:11 +02:00
Gustl22
f599a14506 Extend GLState: viewport, texture, framebuffer (#667) 2019-02-20 09:49:26 +02:00
Gustl22
46349724a8 GLUtils: generate / draw buffers, set color (#666) 2019-02-19 15:31:48 +02:00
Emux
915cdae09c Update changelog 2019-02-19 14:15:34 +02:00
Gustl22
bac510370a GL shader preprocessor improvements (#658) 2019-02-19 13:56:25 +02:00
Gustl22
45cf4057d1 GL30 adapter (#652) 2019-02-19 13:45:22 +02:00
Gustl22
f6f00c2521 GL30 from libGDX (#643) 2019-02-19 13:42:42 +02:00
Emux
f6af3d7410 Merge pull request #664 from Gustl22/geometry_utils
GeometryUtils: Fix reverse clockwise check
2019-02-19 13:31:23 +02:00
Emux
7c2976819f Samples: add shadows test #655 2019-02-19 13:12:58 +02:00
Gustl22
eb3efa7a69 Sun calculator (#655) 2019-02-19 12:55:37 +02:00
Gustl22
16132f7ae3 GeometryUtils: Fix reverse clockwise check 2019-02-19 11:51:02 +01:00
Izumi Kawashima
c06b2712a0 GLMatrix: lookAt, orthoM (#656) 2019-02-19 12:08:27 +02:00
Gustl22
28b16a3232 GeometryUtils: length, normalize | ColorUtil: blend (#653) 2019-02-19 12:05:39 +02:00
Gustl22
0a8e56ea05 DateTime adapter (#628) 2019-02-19 12:05:39 +02:00
Gustl22
1f0b5509ed Extend GeometryUtils, ArrayUtils (#662) 2019-02-19 11:53:28 +02:00
Gustl22
777d33a4de Gradle: remove redundant resources (#660) 2019-02-19 11:15:43 +02:00
Gustl22
5887d5c6a2 BitmapTileLayer: alpha fade improvements (#661) 2019-02-19 10:58:55 +02:00
Emux
a443e732f5 Update changelog 2019-02-19 10:47:04 +02:00
Gustl22
fc452a76e7 Format shaders (#654) 2019-02-11 09:34:49 +02:00
Gustl22
48a5c36c31 Extrusions: light source calculation with normals (#651) 2019-02-10 16:24:49 +02:00
Emux
bab34aab2b Fix some typos 2019-02-10 16:24:49 +02:00
Emux
98ab1f7100 Update Gradle plugin 2019-02-07 15:06:48 +02:00
Gustl22
1734f3f87a Extrusion shader variable docs (#650) 2019-02-07 14:23:47 +02:00
Emux
3a8e50d703 Merge pull request #649 from Gustl22/alpha
mesh extrusions shader: transparent alpha fade
2019-02-07 14:21:13 +02:00
Gustl22
235decb041 mesh extrusions shader: transparent alpha fade 2019-02-03 19:02:05 +01:00
Emux
6bbedd0f2b Update changelog 2019-02-02 14:54:08 +02:00
Gustl22
ce87e89b4f Complete GL20 interface (#642) 2019-02-02 14:50:21 +02:00
Emux
1af38a7306 GLShader: Error: uniform u_mode specified with different precision in different shaders. Fix #641 2019-01-26 14:33:43 +02:00
Gustl22
d219632825 Format shaders (#639) 2019-01-26 14:20:08 +02:00
Emux
84d6b311ea Merge pull request #638 from Gustl22/uMode
Shaders: u_mode uniform as integer
2019-01-26 12:34:22 +02:00
Gustl22
c32652c066 u_Mode uniform as integer 2019-01-25 20:46:51 +01:00
Gustl22
11a5d841f9 GL debug improvements (#636) 2019-01-24 09:29:00 +02:00
Emux
25c75a009d Travis: switch to OpenJDK 2019-01-23 13:21:29 +02:00
Emux
b611b979e4 libGDX 1.9.9 #635 2019-01-23 13:10:08 +02:00
Emux
540d6c23f9 libGDX 1.9.9, fix #635 2019-01-23 12:45:50 +02:00
Emux
5eb27b7553 Update Gradle 2019-01-23 12:19:34 +02:00
Emux
ef87bae51f Mapilion: more hillshading options #614 2019-01-23 10:38:54 +02:00
Emux
8c2f788069 GL debug improvements #626 2019-01-23 10:21:37 +02:00
Gustl22
cae68ffec9 BuildingLayer: add getExtrusionRenderer (#633) 2019-01-23 09:49:55 +02:00
Emux
929d1fc78b Merge pull request #634 from Gustl22/width_height_doc
Viewport: doc for height and width
2019-01-23 09:42:51 +02:00
Gustl22
608edc2d46 vtm-web: move SLF4J GWT logger provider to app implementations (#630) 2019-01-23 09:37:11 +02:00
Gustl22
a0c7a70e00 Viewport: doc for height and width 2019-01-23 01:20:13 +01:00
Gustl22
a3cdace8d2 Web: doc for debugging (#632) 2019-01-22 22:38:28 +02:00
Emux
de2fe89ecd Merge pull request #631 from Gustl22/poi3d_logging
Poi3D: disable debug log with much traffic
2019-01-22 22:30:35 +02:00
Emux
73b530a807 Merge pull request #627 from Gustl22/gradle
vtm-web: fix nested folder in gradle
2019-01-22 22:28:23 +02:00
Gustl22
4b418b9bb9 Improve GL debug (#626) 2019-01-22 21:47:21 +02:00
Gustl22
e514e29010 Poi3D: disable debug log with much traffic 2019-01-19 18:22:20 +01:00
Emux
8d34090eb8 Update applications list 2019-01-07 18:33:54 +02:00
Gustl22
93d6c1bf14 vtm-web: fix nested folder in gradle 2019-01-07 01:04:50 +01:00
mathieudebrito
a1c45d1dc3 Update changelog 2018-12-21 19:26:22 +02:00
mathieudebrito
69421c0381 ViewController: pivotX, pivotY in map view center (#625) 2018-12-21 19:22:02 +02:00
Emux
1efed2bef8 Samples improvements #32 2018-12-20 11:25:03 +02:00
Emux
98474b187d OpenMapTilesMvtTileSource: use proper url #482 2018-12-20 11:25:03 +02:00
Gustl22
abd08ab884 Reorder GL 2.0 interface like libGDX (#623) 2018-12-20 11:06:13 +02:00
Gustl22
e18f3577f0 CircleBucket: exclude VERTEX_PROGRAM_POINT_SIZE on Android (#620) 2018-12-20 10:55:25 +02:00
Emux
8ac26e9567 Update Applications.md 2018-12-16 17:30:06 +02:00
Gustl22
c984eae2d5 Reorder method / field modifiers (#619)
* Reorder method / field modifiers

* Reorder method / field modifiers v2
2018-12-14 20:38:54 +02:00
Gustl22
d806d6bcca Add missing @Override annotations (#617) 2018-12-12 11:10:33 +02:00
Emux
a62d77583b Merge pull request #616 from Gustl22/poi3d_v2
Poi3DLayer improvements v2
2018-12-10 20:06:33 +02:00
Gustl22
6f4ab468a7 Poi3D: Zoomlimiter,
improved line/area model placement,
optional hiding theme renders
2018-12-10 16:01:11 +01:00
Gustl22
20352f2053 vtm-core: supplement Box (#609) 2018-12-10 14:33:02 +02:00
Gustl22
357ec99b44 vtm-core: reorder Box code (#615) 2018-12-10 14:23:54 +02:00
Emux
0271e9df23 Mapilion vector tiles & Hillshading, fix #614 2018-12-09 19:38:24 +02:00
Emux
04a18f82e1 Merge pull request #612 from Gustl22/tileclipper
TileClipper: synchronize clip
2018-12-09 16:42:12 +02:00
Gustl22
576d5f741d Desktop.md: instructions to run standalone jar (#613) 2018-12-09 16:00:50 +02:00
Emux
01958b7d34 Gradle build improvements 2018-12-09 15:56:37 +02:00
Emux
41d5d21bc6 Merge pull request #608 from Gustl22/static_final
Refactor 'final static' to 'static final' convention
2018-12-09 15:44:22 +02:00
Emux
b0f155a377 MapScaleBarLayer: check if scale bar is destroyed, fix #611 2018-12-09 15:02:49 +02:00
Gustl22
a517b76e9e TileClipper: synchronize clip() 2018-12-07 23:46:25 +01:00
Gustl22
70dd6554c3 refactor 'final static' to 'static final' convention 2018-12-06 21:06:04 +01:00
Gustl22
62132937da poi3D enhancements for playground (#607) 2018-12-05 11:11:45 +02:00
Emux
2784d78737 Merge pull request #606 from Gustl22/poi3d_android
Poi3D for Android
2018-12-05 10:47:23 +02:00
Gustl22
b5036f4cfd poi3D for Android 2018-12-04 09:11:51 +01:00
Emux
2388c352d5 Update changelog 2018-12-03 12:13:28 +02:00
Izumi Kawashima
09a6cf2497 vtm-gdx-poi3d module (#600) 2018-12-03 12:04:20 +02:00
Emux
e20b941eb9 Merge pull request #605 from Gustl22/glstate_const
GLState: constant UNBIND = 0
2018-12-03 11:43:30 +02:00
Emux
1dba14ec9a Merge pull request #604 from Gustl22/issue_601
Playground renderer: bind with GLState, #601
2018-12-03 11:40:40 +02:00
Emux
e773d868f1 Merge pull request #603 from Gustl22/short_constant
Renderer: replace with SHORT_BYTES constant for better readability
2018-12-03 11:36:25 +02:00
Gustl22
07afebba4e GLState: constant UNBIND = 0 2018-12-02 23:43:46 +01:00
Gustl22
7146875c05 Playground renderer: bind with GLState (#601) 2018-12-02 23:34:37 +01:00
Gustl22
42627d5881 Renderer: replace with SHORT_BYTES constant for readability 2018-12-02 23:23:29 +01:00
Emux
bb87c8a51b Overzoom: fix reverse geocode #393 2018-11-16 14:13:32 +02:00
Emux
b69570aa68 Render theme improvements #41 2018-10-31 14:07:19 +02:00
Izumi Kawashima
699e9e37f3 XmlThemeBuilder: fix check at <atlas> tag processing (#598) 2018-10-31 11:52:45 +02:00
Emux
63b62e3c82 Update README.md 2018-10-31 11:18:03 +02:00
Emux
6a2b2afdba Tag transform: check theme existence, #420 2018-10-21 17:29:38 +03:00
Emux
292c092be3 Layers: catch ArrayIndexOutOfBoundsException in updateLayers, #596 2018-10-21 17:29:38 +03:00
Emux
85c604c1ee Update Gradle plugin 2018-10-12 10:23:40 +03:00
Emux
a530070ecf Render themes: PNG scaling, fix #595 2018-10-11 14:08:35 +03:00
Emux
f853e54d77 XmlThemeBuilder: fix checkElement 2018-10-11 14:08:35 +03:00
Emux
928ece7853 Update changelog 2018-10-10 21:11:52 +03:00
Emux
9524c9d74d XmlThemeBuilder: fix checkElement 2018-10-10 21:09:38 +03:00
Gustl22
61318bff8a Render themes: tag transform (#587) 2018-10-10 21:06:37 +03:00
Emux
7c2d2d3759 Update Gradle 2018-10-01 10:23:27 +03:00
Emux
34f4432818 PathLayer(s) scaled width, fix #594 2018-09-22 14:31:34 +03:00
Emux
596679d1f9 ItemizedLayer: improve scaling in touch calculations 2018-09-22 14:30:38 +03:00
Emux
14c6b6fe8f vtm-jts: add blur option in (line) style 2018-09-21 13:33:14 +03:00
Emux
e6006a0228 MapRenderer: add null check for layer renderers, fix #593 2018-09-21 10:12:56 +03:00
Gustl22
f44f083378 S3DBLayer: distinguish extrusion style (side / top) colors (#592) 2018-09-21 10:00:29 +03:00
Gustl22
f258bae8fd Improve GdxModelLayer (#590)
- multiple models / positions
- use GdxRenderer3D2
- use MIN_ZOOM
- improved model scaling
- rearrange / tidy up
2018-09-21 09:55:17 +03:00
Emux
47f9251c87 MapTile.unlock improvements #539 2018-09-12 20:53:29 +03:00
Emux
650a82a681 Merge pull request #589 from Gustl22/vtm-models
vtm-models: make `tree.g3dj` metric
2018-09-11 15:15:34 +03:00
Emux
219b943d59 Merge pull request #588 from Gustl22/poi3DLayer
Improve Poi3DLayer
2018-09-11 15:14:53 +03:00
Emux
98717e7b46 Merge pull request #586 from Gustl22/separator
MapDatabase: separate POIs
2018-09-11 14:44:02 +03:00
Gustl22
bb924181b4 vtm-models: make tree.g3dj metric 2018-09-10 15:07:22 +02:00
Gustl22
7c92d1045a Improve Poi3DLayer:
- insert MIN_ZOOM
- support multiple models / multiple tags
- parameter RANDOM_TRANSFORM
- use ground scale
2018-09-10 15:01:12 +02:00
Gustl22
e0f6afaf43 MapDatabase: separate POIs 2018-09-09 21:42:27 +02:00
Gustl22
d36320967c vtm-models: add 3D models, rename treeA.g3dj (#582) 2018-09-08 20:50:37 +03:00
Gustl22
33528a3e61 Poi3DLayer: use GdxRenderer3D2, rearrange code (#584) 2018-09-08 20:32:25 +03:00
Emux
131e1a183c Merge pull request #583 from Gustl22/gdx_renderer
GdxRenderer3D2: render light source, minor tidy up
2018-09-08 20:20:46 +03:00
Gustl22
6fa1c5aa94 Overzoom: separate GeometryType.POINT (#574) 2018-09-08 19:35:48 +03:00
Gustl22
62055a1aa1 GdxRenderer3D2: render light source, minor tidy up 2018-09-06 15:46:09 +02:00
Gustl22
da09a62605 PoiSearchActivity sample: add search by tag (#579) 2018-09-05 19:15:24 +03:00
Emux
7a7ceb6d60 Update changelog 2018-09-05 15:01:12 +03:00
Emux
3bba870c90 vtm-models module, fix #580 2018-09-05 14:50:54 +03:00
Gustl22
272ce1d9b6 vtm-themes: move GDX models (#577) 2018-09-05 14:42:38 +03:00
Emux
de259c27d7 Merge pull request #576 from Gustl22/modelinstance
vtm-playground: replace SharedModel with ModelInstance
2018-09-05 14:19:44 +03:00
Gustl22
74a7150cff Replace SharedModel with ModelInstance 2018-08-30 10:21:35 +02:00
Emux
3beb830baf 0.10.0 2018-08-28 11:27:52 +03:00
Emux
a9b7e310be Merge pull request #573 from Gustl22/scanbox
ScanBox docs: Remove problematic arrows (#571)
2018-08-28 09:47:58 +03:00
Gustl22
d04e2a06fb ScanBox docs: Remove problematic arrows (#571) 2018-08-27 22:14:58 +02:00
Gustl22
f3f629779f GDX samples: remember map position (#569) 2018-08-25 17:33:49 +03:00
Emux
278ef523b8 Merge pull request #567 from Gustl22/gdx_poi3d
vtm-playground: fix scale of trees in higher zoom levels (GDX)
2018-08-25 13:57:21 +03:00
Gustl22
b98e20273c playground gdx: fix scale of trees in higher zoom levels 2018-08-24 19:06:15 +02:00
Gustl22
2a0ec3d82e ExtrusionRenderer: fix translucency for meshes (#566) 2018-08-24 09:58:52 +03:00
Emux
334a5e3fdb Merge pull request #565 from Gustl22/gl_state
GLState: State DISABLED = -1
2018-08-24 09:43:08 +03:00
Gustl22
12b56905f6 ExtrusionRenderer: simplify mesh-mode int to boolean (readability) (#564) 2018-08-24 09:27:04 +03:00
Gustl22
63cd462109 GLState: State DISABLED = -1 (readability). 2018-08-23 22:46:40 +02:00
Emux
f07de4c910 Layers more synchronized API #507 2018-08-22 20:07:32 +03:00
Izumi Kawashima
66c5e2b773 Support display density for WebGL (#563) 2018-08-15 18:45:47 +03:00
Emux
02b42539f3 POI: SQLite Android Bindings, fix #562 2018-08-13 12:55:34 +03:00
Emux
5605fff111 Update integration guide 2018-08-13 12:43:30 +03:00
Emux
052e3970e5 Gradle: exclude R inner classes from jar files for Android libs 2018-08-13 12:21:48 +03:00
Emux
0bb0312913 AndroidSVG 1.3 2018-08-12 17:35:04 +03:00
Emux
ed735aea64 SVG Salamander (JitPack), fix #560 2018-08-12 15:50:22 +03:00
Emux
c9e266408e Update Maven Central links 2018-08-12 14:54:46 +03:00
Emux
dc262dbd1d Update Android build tools 2018-08-07 09:47:49 +03:00
Emux
9a6ea88c23 LocationRenderer: some protected members 2018-08-02 12:50:21 +03:00
Emux
d58d79facf ViewController API enhancements 2018-07-06 14:12:27 +03:00
Emux
bbd27f1332 Render themes: extrusion color improvements #41 2018-07-06 13:09:17 +03:00
Emux
37b80e904d Mapsforge maps v5 exit 'beta' 2018-07-05 21:44:14 +03:00
Emux
f2bf6cd6ee Mapsforge themes parser united with VTM #100 2018-07-05 21:42:56 +03:00
Emux
40f2910991 Update Android build tools 2018-07-02 21:05:10 +03:00
Emux
a74e7f04e2 Update Applications.md 2018-07-01 15:49:50 +03:00
Emux
cfb12dd3f1 Location renderers: add animation option 2018-07-01 12:40:33 +03:00
Emux
df67f81156 LocationRenderer improvements 2018-07-01 12:40:33 +03:00
Emux
bb69e6acbd LocationTextureLayer improvements #547 2018-07-01 12:40:33 +03:00
Emux
9ac533846d Update README.md 2018-07-01 12:39:32 +03:00
Gustl22
a7147d1c6e Render themes documentation (#558)
* vtm render-theme docs

* remove 'a' from render-theme docs

* Rendertheme: correct "priority" description

* Rendertheme: improve "priority" description
2018-07-01 12:37:38 +03:00
Gustl22
a1c5f4aa5a Docs improvements (#557) 2018-06-28 11:12:08 +03:00
Gustl22
981af11011 S3DBLayer: use transparency of extrusion style (#556) 2018-06-24 18:43:01 +03:00
Gustl22
c0efc78d37 Clarify building TRANSLUCENT flag #181 (#555) 2018-06-24 18:22:34 +03:00
Emux
857b2318f9 Update changelog 2018-06-24 13:37:16 +03:00
Gustl22
9e52e9e848 Label layer: use ZoomLimiter for overzoom (#544) 2018-06-24 13:35:22 +03:00
Emux
c8068d5835 Merge pull request #553 from Gustl22/s3db_roof_angle
S3DBLayer: fix roof height estimation based on tag "roof:angle"
2018-06-21 11:38:08 +03:00
Gustl22
2752878e9e S3DBLayer: fix roof angle estimation 2018-06-15 11:43:05 +02:00
Emux
2e9b6bf42c Fix g3d models 2018-06-11 11:05:34 +03:00
Emux
4ebca73023 Android 9 compatibility, fix #550 2018-06-10 19:14:55 +03:00
Emux
e6a90a8da5 Android P 2018-06-08 20:11:30 +03:00
Longri
0fefd20cc6 LocationTextureRenderer: add billboard rendering property (#549) 2018-06-02 15:28:44 +03:00
Emux
94a2461741 LocationTextureRenderer: disable billboard in symbol rendering #547 2018-06-02 12:37:04 +03:00
Emux
4d7de87e7d LocationTextureActivity: scale location texture size #547 2018-06-01 14:58:50 +03:00
Emux
f9193eaa3f Location texture renderer improvements #547 2018-06-01 13:52:17 +03:00
Longri
0f5af24361 Location texture renderer (#548)
- add LocationTextureLayer with accuracy
- add Android sample for LocationTextureLayer
2018-06-01 12:27:53 +03:00
Emux
befa40e094 Map overzoom: fix MapElement labelPosition processing #393 2018-05-17 09:48:32 +03:00
Emux
92937667d8 Render themes: use tessellation in water areas, fix #224 2018-05-11 14:55:34 +03:00
Emux
12cb34146c Scale factor for short vertices improvements, fix #537 2018-05-11 13:19:02 +03:00
Emux
34023cdc95 Render themes: house numbers zoom-min 18 #393 2018-05-11 12:08:14 +03:00
Emux
c79dbb26ea Tile sources: enable full overzoom #393 2018-05-11 12:08:14 +03:00
Emux
77ea71c519 Update changelog 2018-05-11 10:36:58 +03:00
Gustl22
472a34c280 Building layers: use ZoomLimiter for overzoom (#528) 2018-05-11 09:51:09 +03:00
Emux
7a9fc99079 Merge pull request #541 from Gustl22/bucket_format
Package renderer: minor formatting & amendments
2018-05-10 15:12:47 +03:00
Emux
b4c8305f0d Merge pull request #540 from Gustl22/short_bucket
Buckets: assign short qualifier
2018-05-10 15:06:12 +03:00
Gustl22
5d1da5fecd Renderer: minor formatting & amendments 2018-05-09 13:30:05 +02:00
Gustl22
6dad9af7da Buckets: assign short bytes qualifier 2018-05-09 12:55:35 +02:00
Emux
7ca09f3acb MapTile.unlock improvements #539 2018-05-08 15:18:54 +03:00
Emux
b9f989a454 MapTile.unlock NullPointerException, fix #539 2018-05-08 14:26:56 +03:00
Emux
516b18bdef Scale factor for short vertices calculation, fix #537 2018-05-05 20:19:26 +03:00
Emux
3a67bbce84 Update changelog 2018-05-01 18:20:21 +03:00
Gustl22
77cfad50e0 LineTexBucket: fix out of short range (#532) 2018-05-01 18:20:21 +03:00
Gustl22
ccfbb359a4 Vector layers: clip to max GL.Short resolution (#529) 2018-05-01 18:20:21 +03:00
Emux
b240be8ba7 Merge pull request #534 from Gustl22/format_shader
format shaders
2018-04-29 18:54:10 +03:00
Emux
241281c5e7 Merge pull request #533 from Gustl22/shader_poly_texture
Poly Texture shader: correct shader separator
2018-04-29 16:59:48 +03:00
Gustl22
a92b3a18c1 format shaders 2018-04-27 10:58:38 +02:00
Gustl22
625f11cc55 poly_texture shader: correct shader separator 2018-04-27 10:49:27 +02:00
Emux
4e368e77dc Update Android Gradle plugin 2018-04-24 19:20:07 +03:00
Emux
d8163b9f12 Merge pull request #530 from Gustl22/path_refactor
PathLayer Task (regular): final variables + minor refactor
2018-04-18 19:06:49 +03:00
Gustl22
cb36cfc983 PathLayer Task (regular): final variables + minor refactor 2018-04-17 20:44:30 +02:00
Emux
512383892c Update changelog 2018-04-15 11:43:17 +03:00
Gustl22
11de89536d Mapsforge fix map clipping on small zooms (#526) 2018-04-15 11:40:52 +03:00
Gustl22
d1f9a4e8f6 Fix blank tiles on large windows and tilt (#522) 2018-04-14 18:37:58 +03:00
Emux
7aac624ec7 Update changelog 2018-04-14 17:41:13 +03:00
Gustl22
d7aad27ed8 ViewController: refactor 'setScreenSize' to 'setViewSize', 'setMapScreenCenter' to 'setMapViewCenter' (#523) 2018-04-14 17:36:13 +03:00
Emux
d036bb0bac Merge pull request #524 from Gustl22/path
PathLayer: refactor 'RenderPath' to 'PathRenderer'
2018-04-14 17:30:00 +03:00
xiaoyan-qq
12e04ca7ef JtsLayer: fix Envelope parameters order in processFeatures (#525) 2018-04-14 17:21:20 +03:00
Gustl22
e204056972 refactor 'RenderPath' to 'PathRenderer' 2018-04-12 15:04:49 +02:00
Emux
0604d579de Update Android Gradle plugin 2018-04-10 10:25:36 +03:00
Emux
57d56fbedf Fix Mapsforge dependency 2018-04-10 10:25:27 +03:00
Emux
cdd07c0da3 MapDatabase: decode way geometry by @Bezzu, fix #517 2018-03-29 16:35:21 +03:00
Emux
c7eaaa9100 MapDatabase tile clipping: convert some local variables #518 2018-03-29 16:32:07 +03:00
Gustl22
345b57c57a Buildings overzoom: use TileSeparator (#518) 2018-03-29 15:28:40 +03:00
Gustl22
27a3c5a926 LineClipper: name and unify clip states (#519) 2018-03-29 14:07:59 +03:00
Emux
c3b62fbdf5 Update Gradle 2018-03-28 10:00:03 +03:00
Gustl22
846074ddc1 OpenMapTiles: support building heights (#516) 2018-03-22 16:07:31 +02:00
Emux
0137d9ff1f Samples Desktop: remember map position #32 2018-03-22 11:11:01 +02:00
Emux
fed0996f6f Samples improvements #32 2018-03-22 11:08:03 +02:00
Gustl22
dcad929316 Samples MapsforgeActivity: remember map position (#515) 2018-03-22 09:52:46 +02:00
Emux
69ed1fe034 Update applications list 2018-03-21 11:36:56 +02:00
Gustl22
6fef1854c8 MapDatabase: improve buildings processing (#514) 2018-03-20 10:01:15 +02:00
Emux
6af2d305b3 Make Travis happy 2018-03-18 19:56:05 +02:00
Emux
da628f99d6 Mapsforge maps v5: fix (empty) wildcards processing #429 2018-03-18 18:23:11 +02:00
Gustl22
5f57f97844 TileRenderer: load tile with proxy immediately (#510) 2018-03-06 11:07:27 +02:00
Emux
88d94ede01 Getting Started example in Samples #32 2018-02-24 18:28:42 +02:00
Emux
27bf0316de GridRenderer fix default scaling #238 2018-02-24 18:22:06 +02:00
Gustl22
77d0c36539 VTM high resolution logo (#508) 2018-02-24 18:22:06 +02:00
Emux
cd77b8fcd4 Samples improvements #32 2018-02-21 13:12:28 +02:00
Emux
28e938b536 Markers: increase properly the view to show partially visible items 2018-02-20 16:15:24 +02:00
Emux
e85e056a0c ItemizedLayer synchronized API, fix #507 2018-02-20 15:53:45 +02:00
Emux
e108e6e3d7 Merge pull request #506 from Gustl22/s3db
S3DB: Fix skillion calculation on (triangular) shapes
2018-02-20 14:27:07 +02:00
Gustl22
884f524fb1 Fix skillion calculation on triangles 2018-02-20 12:08:35 +01:00
Emux
f1570a9531 POI search sample: open / close DB at start / exit #32 2018-02-17 16:47:45 +02:00
Emux
7e0d4f64dd Animator2: improve docs 2018-02-16 11:00:52 +02:00
Gustl22
ba18ccf967 Physical fling enhancements (#505) 2018-02-15 19:43:59 +02:00
Emux
956feec116 Update integration guide 2018-02-14 13:09:49 +02:00
Emux
f3bc792ebe Update integration guide with jeo 2018-02-14 13:00:23 +02:00
Emux
2bacad9bb5 TileSource add getter 2018-02-13 15:29:42 +02:00
Emux
3a81957f9a Animator: enhance API 2018-02-12 20:46:59 +02:00
Emux
7d6d41b3c1 Animator: enhance API 2018-02-12 13:03:27 +02:00
Emux
bbc6e2cc65 Merge pull request #502 from devemux86/overzoom
Map overzoom implementation
2018-02-11 19:46:11 +02:00
Emux
5b15eb9d7c Update changelog 2018-02-11 19:11:16 +02:00
Emux
4e263fb95b OpenMapTiles: apply map overzoom #482 2018-02-11 19:11:15 +02:00
Emux
a5c6bc027f Map overzoom implementation #393 2018-02-11 19:11:07 +02:00
Emux
67dde0af7d FastMath reorganization 2018-02-11 11:48:18 +02:00
Gustl22
bd9e7d7456 Fix fling rotation reverses direction (#501), fix #500 2018-02-11 11:14:51 +02:00
Emux
71a82d087b Update changelog with Parameters 2018-02-09 11:57:29 +02:00
Gustl22
3ed6c43161 Add rotate & scale fling animation (#499) 2018-02-09 11:17:54 +02:00
Emux
0e855cb47f Samples improvements #32 2018-02-08 12:50:07 +02:00
Emux
5aba3ac373 Animator2 samples #497 2018-02-08 11:41:33 +02:00
Gustl22
03eb28f09e Animator2: physical fling (#497) 2018-02-08 11:38:10 +02:00
Emux
241f112b58 Minor samples renaming 2018-02-07 20:34:13 +02:00
Emux
3a59a31ab3 Building / S3DB layers: simplify building element 2018-02-06 19:24:48 +02:00
Emux
25aa1329fc BuildingRenderer: deprecate redundant S3DB render from parent tiles 2018-02-06 15:40:18 +02:00
Emux
d76ac00403 Update readme 2018-02-06 15:31:14 +02:00
Emux
beed7335fc Nextzen MVT & GeoJSON vector tiles, fix #498 2018-02-06 14:17:15 +02:00
Emux
f7f1940054 MapElement: add building methods 2018-02-06 14:02:50 +02:00
Emux
c46548d15e XmlMapsforgeThemeBuilder: use tags #411 2018-02-06 13:51:34 +02:00
Emux
1be12b2700 Minor key adjustments 2018-02-06 13:49:50 +02:00
Emux
20bdf84d91 Theme texture atlas: maintain symbol attributes #63 2018-01-30 20:08:55 +02:00
Emux
e304c04f1c Render themes: symbols on lines, fix #495 2018-01-30 15:44:29 +02:00
Emux
ea21d64822 Mapsforge themes: 3D buildings improvements #411 2018-01-30 15:42:35 +02:00
Gustl22
3905ddb5e4 MapEventLayer2: improve double tap (#493) 2018-01-30 11:29:44 +02:00
Emux
57ce026efd LineTexBucket: fix scale precision #105 2018-01-28 18:18:28 +02:00
Emux
1ba83801e9 Polygon symbols default disabled, fix #405 2018-01-28 15:39:16 +02:00
Emux
c93bb64a8a Fix map view roll normalization #474 2018-01-26 20:20:36 +02:00
Emux
05d0b2b116 Fix map view roll #474 2018-01-26 19:01:11 +02:00
Emux
33241250ff Update changelog 2018-01-26 18:29:35 +02:00
Emux
dcd2ebad29 Viewport: fix initial values 2018-01-26 18:29:35 +02:00
Izumi Kawashima
49476e17bb Map view roll (#474) 2018-01-26 18:29:35 +02:00
Emux
4d7078e861 MapPosition: fix initial values 2018-01-26 15:47:38 +02:00
Emux
08c20daef2 MapUrl: fix parameters 2018-01-26 15:34:39 +02:00
Emux
fd647f7458 Update changelog 2018-01-26 13:30:58 +02:00
Gustl22
5ff9abca1a Improve fling animation (#489)
Easing: add Sin in and out
Animator: Smooth Fling
MapEventLayer: note for changing initial rotation position
2018-01-26 13:30:58 +02:00
Emux
a1cfd80853 mapbox-vector-tile 3.0.0 #481 2018-01-24 20:34:03 +02:00
Emux
45cb01c59d Merge pull request #492 from Gustl22/themes
Fix Internal render theme styles order (#490)
2018-01-24 19:32:39 +02:00
Gustl22
f98fe65827 fix styles order via use-attribute 2018-01-24 16:20:47 +01:00
Emux
131f36dbd4 Update changelog 2018-01-23 21:38:31 +02:00
Gustl22
8e35a178d2 Internal render theme improvements (#488) 2018-01-23 21:19:32 +02:00
Emux
aa623f81db Update samples 2018-01-22 12:13:08 +02:00
Emux
43c9c4c8bd mapbox-vector-tile-java (JitPack) #481 2018-01-22 12:05:47 +02:00
Emux
e36d5b53ea Gradle improvements 2018-01-22 11:30:48 +02:00
Emux
23f48082a1 Fade steps alpha interpolation, fix #486 2018-01-20 18:56:39 +02:00
Emux
b42973662e Map fractional zoom, fix #487 2018-01-20 18:55:00 +02:00
Emux
431790a638 TileSource: add alpha parameter 2018-01-19 14:49:47 +02:00
Emux
aa5a1436ca JTS (LocationTech), fix #484 2018-01-16 14:48:50 +02:00
Emux
f5386f3503 Update dependencies 2018-01-16 14:25:48 +02:00
Emux
92d218572f Update changelog 2018-01-14 15:56:47 +02:00
Gustl22
067f08834d Improved theme styles (#479)
Fonts added: thin, light, medium, black, condensed
2018-01-14 15:31:31 +02:00
Emux
af98b0668a Fix libGDX flickering, fix #148, fix #149 2018-01-13 14:14:28 +02:00
Emux
ab7164499d Deprecate OpenMapTiles GeoJSON vector tiles, #385 2018-01-13 14:14:27 +02:00
Emux
be483fff89 Merge pull request #483 from Longri/update_SVGh
Update iOS SVGgh (exclude x86 natives)
2018-01-13 14:11:56 +02:00
Longri
25627462c4 update iOS SVGh (exclude x86 native's) 2018-01-13 12:58:35 +01:00
Emux
758f62a589 Samples improvements #32 2018-01-12 20:15:42 +02:00
Emux
84c734accd Update documentation 2018-01-12 19:38:56 +02:00
Robin
d049d378dd vtm-mvt module with new MVT tile decoder (#481) 2018-01-12 19:02:43 +02:00
Emux
5093f292ba Update documentation 2018-01-10 21:21:33 +02:00
Emux
80634a4adf Samples improvements #32 2018-01-10 20:53:56 +02:00
Emux
969c44717a S3DBLayer: add zoom limit options #475 2018-01-10 20:21:56 +02:00
Emux
51d4521e6a Render themes: fallback internal resources, fix #477 2018-01-09 15:56:16 +02:00
Gustl22
3a596aaf1a ColorUtil implement semi-relative color modification (#478) 2018-01-09 15:36:45 +02:00
Emux
699d63db10 S3DB layer samples #475 2018-01-09 12:22:28 +02:00
Gustl22
ca9786dca3 S3DB layer (#475) 2018-01-09 11:51:04 +02:00
Emux
85342ddd84 OpenMapTile theme improvements 2018-01-08 11:17:38 +02:00
Emux
e16d7d2059 Merge pull request #476 from boldtrn/patch-1
OpenMapTiles Max-Zoom Fix
2018-01-08 10:57:48 +02:00
Robin
75fc29e9d5 OpenMapTiles Max-Zoom Fix
Fixed Maxzoom for OpenMapTiles
2018-01-08 16:01:24 +11:00
Emux
0be2560594 Samples: improve permissions 2018-01-05 15:11:47 +02:00
Emux
fef055777a OSciMapS3DBTest add labels 2018-01-05 13:16:22 +02:00
Emux
edfbae323f OpenMapTilesGeojsonTileSource: fix header date #468 2018-01-04 22:06:08 +02:00
Emux
6c92f9db33 OpenMapTiles max zoom 16 #468 2018-01-04 22:03:23 +02:00
Emux
ec3e8ba5c9 Samples: disable cache for debug 2018-01-04 20:20:55 +02:00
Emux
54de362e44 Update changelog 2018-01-04 16:05:33 +02:00
Emux
1e0fd54ee1 Comment Mapzen examples 2018-01-04 16:04:34 +02:00
Robin
5fc42268a4 OpenMapTiles theme (#468) 2018-01-04 15:18:22 +02:00
Gustl22
1d8cdd7feb GeometryUtils: add vector utils (#467)
+ calc bisections
+ sum, diff
+ distance
+ dot product
+ intersections (line and plane)
+ normalizations
+ normal of plane
+ scale
2018-01-04 14:56:54 +02:00
Gustl22
baa924c697 Tessellator: support GeometryBuffer (#466) 2018-01-04 14:51:49 +02:00
Emux
9de76897bc 0.9.2 2018-01-04 14:42:17 +02:00
Emux
a67b2f2c91 Gradle 4 / Android plugin 3 transitive dependencies, fix #433 2018-01-02 14:46:39 +02:00
Emux
791f054f70 libGDX 1.9.8, fix #464 2017-12-29 17:56:21 +02:00
Emux
7e13586463 Update changelog 2017-12-29 17:18:26 +02:00
Emux
c3639dcb24 Update Gretty 2017-12-29 17:18:10 +02:00
Emux
49ded685b4 0.9.1 2017-12-29 16:23:46 +02:00
Emux
9b14865bf3 Gradle 4 / Android plugin 3 improvements, #433 2017-12-29 15:59:59 +02:00
Izumi Kawashima
abac84e82a Add building z-limit function to shader and web ui (#462) 2017-12-26 13:59:42 +02:00
Emux
0367507dae Update changelog 2017-12-26 11:18:56 +02:00
ale5000
9977061680 LwHttp: fixed line break of HTTP headers (#461), fix #460 2017-12-26 11:08:15 +02:00
Emux
3cae38040c Update Android build tools 2017-12-23 15:00:26 +02:00
Gustl22
97cdfa119d Improve ExtrusionBuckets (#459)
+ Add method addPolyElement and addMeshElement
+ renamed setBuckets to resetBuckets
+ Add method getGroundScale to MapTile
2017-12-19 20:59:10 +02:00
Emux
641db3ade0 Merge pull request #458 from Gustl22/buckets
Refactor ExtrusionBucket
2017-12-19 14:09:30 +02:00
Gustl22
bddf2443b6 Refactor ExtrusionBucket
+ color and colors as private
+ renamed add(for meshes) to addMesh
+ renamed add(for polygons) to addPoly
2017-12-19 11:30:35 +01:00
Emux
1404d21838 BuildingLayer: make POST_AA public 2017-12-19 11:42:37 +02:00
Gustl22
95bbc5ea3e BuildingLayer: allow mesh in renderer, minor refactor (#457) 2017-12-19 11:41:43 +02:00
Emux
f8776ffe5f Merge pull request #456 from Gustl22/tags
Add needed osm-tags (S3DB)
2017-12-19 10:33:11 +02:00
Gustl22
bc1dee49a4 Fix double cloning issue of MapElement, use copy-constructor in GeometryBuffer and MapElement (#455) 2017-12-19 10:17:29 +02:00
Gustl22
d81a6309bf Add needed osm-tags (S3DB) 2017-12-19 08:57:56 +01:00
Emux
9a6da018a9 Samples: use OkHttp engine, fix #454 2017-12-12 11:11:29 +02:00
Emux
8d639499ba Fix Travis 2017-12-09 17:46:11 +02:00
Emux
a5d7a8f6b0 Update Mapsforge map providers 2017-12-08 21:26:37 +02:00
Emux
577f1520d2 Update Android build tools 2017-12-05 21:52:08 +02:00
Emux
c938533943 Update changelog 2017-12-04 21:37:55 +02:00
Gustl22
e3b137e3c4 GeometryBuffer: (#453)
+ renamed buffer positions
+ update docs
+ expand toString for meshes/tris
2017-12-04 21:17:30 +02:00
Emux
72b72b8029 Update documentation 2017-12-04 15:31:44 +02:00
Gustl22
ba68b79e86 Refactor S3DB layer (#452) 2017-12-04 15:08:19 +02:00
Emux
49ef4c8e1b 0.9.0 2017-12-03 17:06:59 +02:00
Gustl22
535482025e MapElement: enhance clone (not copy complete buffer) (#451) 2017-12-03 15:28:27 +02:00
Emux
e73ac4acfc Merge pull request #450 from andreynovikov/is-mapsforge-theme
Do not read theme twice if format is predefined
2017-11-27 11:47:38 +02:00
Andrey Novikov
bc20664bc5 Do not read theme twice if format is predefined 2017-11-27 10:22:48 +03:00
Emux
06936fc4ee Mapsforge maps v5 as Beta 2017-11-23 10:25:11 +02:00
Emux
0829098ebb Update Gradle Android plugin 2017-11-22 09:28:45 +02:00
Emux
8ad2036ec1 GeoPointUtils: calculate scale to display a BoundingBox #396 2017-11-20 10:48:16 +02:00
Emux
4f7675d2a8 Render themes: add building parts in all themes #41 2017-11-19 20:36:13 +02:00
Gustl22
8f4e9967f0 Buildings: handle references with id (OpenStreetMap, Mapzen) (#448) 2017-11-18 17:53:42 +02:00
Emux
f884c17195 Update contributing guide 2017-11-18 12:21:26 +02:00
lucaosten
490b932eab Code improvements (#446)
+ reduced memory usage of RenderBucket by making "type" byte instead of int
+ improved code readability in TextItem by renaming variable
+ added latitude/longitude validation methods to GeoPointUtils
+ solved Java double precision problem in GeoPoint
+ made GeoPoint Serializable for easier Android usage
+ made BoundingBox.toString() human readable for better debugging
2017-11-18 11:54:26 +02:00
Gustl22
149353119b Add OSM and S3DB tags (#447) 2017-11-17 20:00:51 +02:00
Emux
9c3f3b8a4c BitmapTileLayer: fix default bitmap alpha #444 2017-11-15 22:08:44 +02:00
Andrey Novikov
f9e06c80ad BitmapTileLayer: fade steps enhancements, support for permanent transparency (#444) 2017-11-14 16:51:56 +02:00
Gustl22
fe2c067272 TagSet: numTags and tag array as private (#439) 2017-11-13 12:24:54 +02:00
Longri
9c3488e107 iOS: add POT textures test (#443) 2017-11-12 12:03:47 +02:00
Longri
df784f6f68 Fix POT textures in render themes (#443) 2017-11-12 12:00:06 +02:00
Schedul Xor
a178357ca8 Added app to Applications.md (#442) 2017-11-11 22:48:35 +02:00
Emux
6627eab8e2 Update Android build tools 2017-11-10 11:31:26 +02:00
Andre Höpfner
0a7638e10d iOS: fix text drawing with stroke width (#441) 2017-11-10 10:38:08 +02:00
lucaosten
f94c665b27 fixed thread safety problem in Viewport (#438)
recycled variables were accessed non synchronized (and therefore non
thread safe) causing errors once multiple threads were used interacting
with the Viewport
2017-11-03 20:04:09 +02:00
Emux
d23bca9c7f Gradle 4 and Android plugin 3 improvements #433, fix #436 2017-10-30 12:28:03 +02:00
Emux
53dbb737fb Gradle 4 and Android plugin 3 improvements #433 2017-10-29 20:23:04 +02:00
Emux
1aa5f24e11 vtm-android-gdx module, fix #435 2017-10-29 18:53:24 +02:00
Emux
1d44057198 libGDX 1.9.7, fix #434 2017-10-29 18:53:13 +02:00
Emux
bcf4cff42b LWJGL 2 desktop exit status #433 2017-10-29 18:53:07 +02:00
Emux
cbdeb58c2f Gradle 4 and Android plugin 3, fix #433 2017-10-29 18:52:55 +02:00
Andrey Novikov
df5bcd583f Enable style categories (#430) 2017-10-24 13:20:18 +03:00
Emux
e2a4ad8a97 Marker clustering: allow custom cluster renderer #312 2017-10-21 19:35:07 +03:00
Emux
795359fb44 Update documentation 2017-10-17 20:12:36 +03:00
Emux
a9a042ea41 Mapsforge maps v5 support improvements #429 2017-10-17 13:15:30 +03:00
Gustl22
cd5a62a2ff Mapsforge maps v5 support (#429) 2017-10-17 11:00:45 +03:00
Andre Höpfner
dfd3a7dcf6 + update SVGgh to version 1.9.2 with iOS 11 compatibility (#426)
+ update RoboVM to version 2.3.2 with iOS  11 compatibility with InteliJ-PlugIn Version 2.3.3-SNAPSHOT and compatibility with Xcode 9.0
2017-10-12 14:54:33 +03:00
Emux
5615604170 Render themes improvements #41 2017-10-12 10:46:26 +03:00
Emux
b3f6899b1f Mapsforge themes: fix default position tag #100 2017-10-12 10:31:01 +03:00
Emux
e3f2f19119 PathLayer, VectorLayer (polygon) overlays touch events #316 #424 (#425) 2017-10-05 20:39:30 +03:00
Emux
126b98ae8c Render themes improvements #41 2017-10-05 20:00:59 +03:00
Emux
9104b746ac ItemizedLayer: use scaling in touch calculations 2017-10-05 15:41:53 +03:00
Emux
fc6bce20bb Update Travis 2017-10-05 13:51:47 +03:00
Emux
76582da497 Render themes: highway ref captions #41 2017-10-04 20:24:29 +03:00
Emux
a06ea5492e Two finger tap zoom out gesture, fix #423 2017-10-04 15:43:01 +03:00
Emux
1d7ece5a65 Render themes: "base-stroke-width", fix #422 2017-10-03 19:42:16 +03:00
Emux
67b911a7df Render themes: add ferries, fix #421 2017-10-03 14:47:39 +03:00
Emux
7947e5c027 Update changelog 2017-10-03 14:27:01 +03:00
Emux
69f7ed7ae0 Update changelog 2017-10-03 13:33:46 +03:00
Gustl22
fa658bd1f0 Support of extrusions in BuildingLayer on Mapzen maps (#419)
+ Tag add "levels"
+ BuildingLayer: support extrusions with height and levels, string unit in meters
+ Support height for Mapzen building_parts
+ Support of building parts in default theme and mapzen
2017-10-03 13:30:23 +03:00
Emux
233f0c4f7e Allow custom tile size instead of the calculated one 2017-09-29 19:37:39 +03:00
Emux
02b29c7584 Samples improvements #32 2017-09-28 21:01:34 +03:00
Emux
cedf3edc61 Render themes improvements #41 2017-09-28 15:05:41 +03:00
Emux
60aa9600d8 Render themes: rule types order, fix #418 2017-09-28 14:47:34 +03:00
Emux
3d92807d26 Render themes: Cap modes, fix #417 2017-09-28 13:00:10 +03:00
Emux
67195bbc0c Mapsforge themes: use tessellation, fix #415 2017-09-27 15:40:29 +03:00
Emux
7ba5984e5f Render themes: store theme origin, fix #414 2017-09-27 15:37:00 +03:00
Emux
27aee33cb9 Do not catch graphics exception too early, fix #413 2017-09-27 14:39:28 +03:00
Andrey Novikov
4a848cc08c Do not catch graphics exception too early (#413) 2017-09-27 14:39:15 +03:00
Emux
75c2841a13 Mapsforge themes 3D buildings, fix #411 2017-09-27 13:18:30 +03:00
Emux
ed8f03122b Update Android libs 2017-09-27 09:51:33 +03:00
Emux
d80e4fdabc Render themes: stroke dash array supports odd entries number #131 2017-09-26 21:35:05 +03:00
Emux
c8817f80c8 Render themes: line symbol improvements #124 2017-09-26 20:58:24 +03:00
Emux
3ee1034f1a Render themes: stroke dash array improvements #131 2017-09-26 20:57:17 +03:00
Emux
3b224d21fc Extrusions default height, fix #409 2017-09-26 19:13:58 +03:00
Emux
0d7d75ccb5 Mapsforge themes: convert "priority" to VTM, fix #408 2017-09-25 15:02:45 +03:00
Emux
324a1c309c Mapsforge themes don't support (-) 'exclusive negation', fix #407 2017-09-24 12:41:53 +03:00
Emux
0046f5c159 Render themes: line symbol, fix #124 2017-09-23 21:03:05 +03:00
Emux
7865867973 Render themes: stroke dash array improvements, fix #131 2017-09-23 18:07:42 +03:00
Emux
7c12c2ae9b Polygon symbol positioning, fix #405 2017-09-19 11:58:22 +03:00
Emux
564435a22a Render themes improvements #41 2017-09-18 09:42:14 +03:00
Emux
607cdeb5db Feature parameters, fix #403 2017-09-16 18:03:28 +03:00
Emux
4903a4b5f4 Update .gitignore 2017-09-16 17:37:59 +03:00
Emux
e5043447e3 PolyLabel samples #402 2017-09-16 17:14:10 +03:00
Emux
4f78fed094 PolyLabel default disabled #402 2017-09-15 21:28:05 +03:00
Emux
0fbce21140 Samples improvements #32 2017-09-15 19:23:36 +03:00
Emux
3a19c2f2f5 Render themes improvements #41 2017-09-14 13:18:56 +03:00
Emux
c694fbc63b VTM map scaling improvements, fix #401 2017-09-14 13:18:56 +03:00
Emux
c4b6d019ff Samples improvements #32 2017-09-14 13:18:56 +03:00
Emux
3603dfef03 ThemeLoader: fix text scaling #92 2017-09-14 09:32:49 +03:00
Emux
35f1e7092c CanvasAdapter: add user scale option #92 2017-09-13 16:32:07 +03:00
Emux
9283b80594 Automatic tile size calculation #92 2017-09-12 20:21:56 +03:00
Emux
f81dff2365 CanvasAdapter: add getScale method #92 2017-09-11 13:05:22 +03:00
Emux
5c2b404b3f Mapsforge Reverse Geocoding #383 (#398)
* Mapsforge Reverse Geocoding #383

* Mapsforge Reverse Geocoding example #383
2017-09-10 17:04:19 +03:00
Emux
095ed65eb3 Core utilities #396 (#397) 2017-09-10 15:59:54 +03:00
Emux
3d7a09c457 OSMIndoorLayer: fix polygon line color parsing #366 2017-09-09 15:56:11 +03:00
Emux
abc1867d7c Fix Point distance 2017-09-08 20:42:33 +03:00
Emux
3449bd86e8 Samples: POI Search example, close #394 2017-09-07 12:02:39 +03:00
Emux
1861ca4a1b Samples improvements #32 2017-09-07 10:32:50 +03:00
Emux
a77d89b8b3 vtm-theme-comparator: use Mapsforge snapshot version #387 2017-09-07 10:09:08 +03:00
Emux
f63c303293 Mapsforge: at large query zoom levels enlarge clip buffer, fixes #231 2017-09-06 11:34:51 +03:00
Emux
f1634e4976 Mapsforge: at large query zoom levels clip everything #231, fixes #391 2017-09-06 11:34:31 +03:00
Emux
b59f20ef49 Fix web modules 2017-09-05 15:45:08 +03:00
Emux
07138f3240 Mapsforge themes compatibility improvements #100, fix #392 2017-09-05 15:24:48 +03:00
Emux
eddfa5a896 vtm-theme-comparator: add 'fatjar' Gradle task #387 2017-09-05 12:30:02 +03:00
Emux
4532e397c0 vtm-theme-comparator: fix application exit #387 2017-09-05 12:29:57 +03:00
Emux
81a270428c Update changelog 2017-09-03 19:15:30 +03:00
Emux
76e73368ab Render themes: line symbol and stroke dash array #124 #131 2017-09-03 18:03:07 +03:00
Emux
f4f8eb8d1c Mapsforge themes compatibility improvements #388 #100 2017-09-03 18:02:55 +03:00
Longri
b695d43fee Mapsforge themes compatibility (#388) #100 2017-09-03 18:02:35 +03:00
Emux
f6d2db4c6f Enable vtm-jeo module #375 2017-08-29 19:48:22 +03:00
Emux
e1db67f099 JTS PathLayer: do not try to calculate zero length great circle path by @andreynovikov #390 2017-08-28 16:56:44 +03:00
Andrey Novikov
7142f3410d PathLayer: do not try to calculate zero length great circle path (#390) 2017-08-28 16:53:54 +03:00
Emux
b110314077 vtm-theme-comparator: use same tile size and synchronize zoom level #387 2017-08-22 19:17:57 +03:00
Emux
1cf4d3a60b vtm-theme-comparator improvements #387 2017-08-21 20:30:28 +03:00
Longri
9c5fd29ff1 vtm-theme-comparator module (#386) #387 2017-08-21 20:24:52 +03:00
Emux
27a39fbfd7 OpenMapTiles theme: enable ocean #385 2017-08-11 22:25:51 +03:00
Emux
d3aa2af73b OpenMapTiles GeoJSON vector tiles #385 2017-08-11 21:33:28 +03:00
Emux
2555fea5da UrlTileSource: customize api key name #49 2017-08-11 21:17:43 +03:00
Emux
8bb63c875f Use Google's Maven repository 2017-07-26 11:02:49 +03:00
Emux
76dcc8b909 Update Android 2017-07-25 09:43:39 +03:00
Wolfgang Schramm
c38975fcba Cluster marker is clipped, fixed by reducing radius (#382)
* fixed cluster marker is clipped by reducing radius

fixed comment, swaped fill <-> outline

* replaced static size with dpi dependent size
2017-07-24 19:16:55 +03:00
Wolfgang Schramm
b90d99f82b ClusterMarkerRenderer: repopulateCluster() is called with different scales (#381)
mScaleSaved is log2 smaller than scale.
This fixes the bug that subsequent calls to populate() will display the markers correctly and will not be clustered to one single cluster.
2017-07-23 18:06:11 +03:00
Andrey Novikov
76d55bb1a0 Do not fling if map move is disabled (#378) 2017-07-19 16:26:37 +03:00
Emux
d9f7638a25 Update changelog 2017-07-19 15:04:19 +03:00
Emux
e7a391e640 LineTexBucket: remove redundant u_scale uniform, fix #376 2017-07-19 15:02:01 +03:00
Andrey Novikov
12fe08884e Enable custom label loader in label layer (#377) 2017-07-19 14:46:25 +03:00
Emux
4d9ad3e942 0.8.0 2017-07-19 11:51:10 +03:00
Emux
ae6ce553b9 Disable vtm-jeo module until update #375 2017-07-19 10:45:37 +03:00
Emux
13c42d509c LabelLayer: improvements for prevent running worker when disabled #374 2017-07-12 10:03:17 +03:00
Wolfgang Schramm
a6aa2b2388 LabelLayer: prevent running worker when disabled (caused a loop) (#374) 2017-07-12 09:57:09 +03:00
Wolfgang Schramm
9f7fe2577b Add state parameter to all animateTo methods which called animStart with a hardcoded state. (#373)
Preserve old API which now calls the extended animateTo methods.
2017-07-08 18:36:03 +03:00
Emux
ad2348631a Update applications list 2017-07-06 19:49:26 +03:00
Emux
2dbad2b16a OkHttp sources and sinks are not threadsafe, fix #369 2017-07-03 12:18:49 +03:00
Emux
8db30d8537 Mapsforge: increase limit for max way length causing empty tiles, fix #370 2017-06-30 22:17:53 +03:00
Emux
25f0310334 Height offset in render styles, close #368 2017-06-24 20:05:34 +03:00
Emux
3041ab5515 GeoJSON tile decoder: fix variable typo #367 2017-06-22 19:58:16 +03:00
Emux
27e2c5dde5 Mapzen GeoJSON vector tiles with vtm-json module, close #55 #367 2017-06-21 14:49:54 +03:00
Emux
a386cfea4f Render theme improvements #41 2017-06-21 10:06:38 +03:00
Emux
fe104300ba Mapzen MVT: refactor tile source #57 2017-06-20 20:54:40 +03:00
Emux
f1ae5c3d68 Deprecate Mapnik GeoJSON sample #48 2017-06-20 20:26:22 +03:00
Emux
767019ee06 OSM indoor layer: allow setting text style #366 2017-06-20 09:24:09 +03:00
Emux
3a3a58d273 OSM indoor layer: allow setting inactive levels color, closes #366 2017-06-19 19:51:45 +03:00
Emux
0eb53403d1 Location renderer: improve scaling #317 2017-06-17 18:05:29 +03:00
akarsh
4938852b40 Update OSMIndoorLayer.java (#365)
The get level method does not parse levels with double type i.e. 0.5.
The app crashes at the time of loading. The solution to this issue, is
parsing double and then converting it into integer value.
e.g. level 0.5 to level 0
2017-06-17 14:31:21 +03:00
akarsh
0d14473132 Update OSMIndoorLayer.java (#364)
The getlevel method does not work for geojson files created without @relations tags.
Here is the example of two levels 1 & 2 file:f483daa278/bothlevels.geojson

Created using JOSM and following simple indoor tagging.
2017-06-16 09:19:39 +03:00
Emux
34ddf3a005 Update indoor Overpass sample 2017-06-15 20:28:41 +03:00
Emux
9ca4785701 Location renderer: fix external shaders initialization #317 2017-06-15 15:50:07 +03:00
Emux
8d2aba9c65 Location renderer: add scaling support #317 2017-06-15 12:31:23 +03:00
Emux
2872ce94a3 Location shaders: proper fix #321 2017-06-13 13:27:58 +03:00
Emux
d5ebf43e3d Location shaders: some Mali GPU don't like ternary operators #321 2017-06-13 12:03:12 +03:00
Emux
223eb120fa Location renderer: avoid continuous rendering, closes #141 2017-06-12 15:40:45 +03:00
Emux
b94d943247 Fix location shader #321 2017-06-11 19:41:52 +03:00
Emux
d409aa5b96 Location renderer custom color, closes #361 2017-06-11 19:12:59 +03:00
Emux
644c83ed69 Android 8.0 (O) 2017-06-09 20:24:38 +03:00
Emux
db871d4a22 OkHttpEngine improvements #138 2017-06-08 19:31:27 +03:00
Emux
3f959a3b46 OkHttpEngine: improve cache API, add example #138 2017-06-07 21:24:18 +03:00
Emux
903dbad9c6 Mapsforge: remove MapDatabase.readZoomTable redundant checks, fixes #357 2017-06-05 13:56:10 +03:00
Emux
3afca64080 OkHttpEngine: add timeout options #138 2017-06-04 22:41:27 +03:00
Emux
16f0d524c5 UrlTileDataSource: catch NPE input stream 2017-06-04 22:38:58 +03:00
Emux
f669022ca3 OSMIndoorLayer: add style scaling #355 2017-06-02 21:54:29 +03:00
Emux
dce7886447 OSMIndoorLayer: enable labels, fixes #355 2017-06-02 21:42:06 +03:00
Emux
f77c46f56d Render theme styles: allow setting menu callback #93 2017-06-01 14:53:11 +03:00
Emux
45383397bc Update dependencies 2017-05-30 14:11:44 +03:00
Emux
c14e93e25d Render themes: add highway ref tag #41 2017-05-28 21:35:36 +03:00
Emux
7b7b5a923a Update applications list 2017-05-24 20:39:25 +03:00
Mathieu De Brito
6b4bb7d8bf Added accessible static value as default building height (#351) 2017-05-22 20:28:11 +03:00
Emux
5d4d630ce0 Update Android Gradle plugin 2017-05-12 09:43:21 +03:00
Andre Höpfner
8d121c0798 Update RoboVM to 2.3.1 release (#350) 2017-05-10 12:23:24 +03:00
Emux
6b362e5125 Update applications list 2017-05-09 22:33:24 +03:00
Emux
c2eb679adf Improve canvas DPI setting, fixes #349 2017-05-09 15:32:06 +03:00
Emux
183cb8aafd Update Android build tools 2017-04-24 20:39:12 +03:00
Emux
4bf27bc910 GdxSpriteBatchTest: fix map position scale #337 2017-04-15 12:39:07 +03:00
Andre Höpfner
f0639972b4 make iOS 10.3 and Xcode 8.3 compatible (#345)
recompile SvgGh library with new code singature needed by iOS 10.3
2017-04-08 20:32:18 +03:00
Emux
e1d17321c6 Update applications list 2017-04-08 17:45:02 +03:00
Emux
b75ac0d647 Update Android Gradle plugin 2017-04-05 15:30:07 +03:00
Emux
7f81ddf47f Update changelog 2017-04-02 17:03:54 +03:00
Longri
c580e1d7a5 Map renderer COORD_SCALE configurable and global use (#344) 2017-04-02 16:26:03 +03:00
Emux
7a28788972 Fix applications list 2017-04-01 17:33:12 +03:00
Emux
36e547d828 Update applications list 2017-04-01 16:21:08 +03:00
Emux
bd762dae9e MapboxMapActivity: disable cache, add grid for debug #32 2017-03-31 16:12:33 +03:00
Emux
347c1d31bb Location renderer improvements #321 2017-03-29 13:28:04 +03:00
Emux
c6be08a903 Update Android support library 2017-03-28 19:32:23 +03:00
Emux
8ab2195500 Layer enabled state #342 improvements 2017-03-28 19:16:03 +03:00
Andre Höpfner
9fff945978 Handle layer enabled state (#342) 2017-03-28 19:13:35 +03:00
Emux
18d8e18bdf Android samples: fix scale bar check on exit #32 2017-03-22 21:34:52 +02:00
Emux
b32692942f Gretty plugin (Gradle) at web modules, closes #338 2017-03-18 19:20:43 +02:00
Emux
9c58d8219c GdxMap: make map renderer protected 2017-03-18 15:17:16 +02:00
Lóránt Viktor Gerber
32c57a42a4 vtm-playground: add SpriteBatch test (#337) 2017-03-18 15:13:50 +02:00
Emux
6c004b8be7 Update changelog 2017-03-18 14:10:53 +02:00
Emux
9a31cc07b5 Update Android support library 2017-03-17 19:19:27 +02:00
Emux
0de27b7354 Update applications list 2017-03-17 14:53:27 +02:00
Longri
dc340a382e vtm-ios: remove slf4j-simple dependency (#335) 2017-03-17 10:54:04 +02:00
Emux
4c9354c326 POT textures #334 improvements and samples 2017-03-16 14:48:06 +02:00
Longri
d1fdca170e POT textures (#334) 2017-03-16 14:15:39 +02:00
Emux
d614809df0 Update integration guide 2017-03-16 10:07:41 +02:00
Emux
0c3acfd69c Update integration guide 2017-03-15 19:59:53 +02:00
Emux
da95660c73 libGDX 1.9.6, closes #333 2017-03-15 14:13:12 +02:00
Emux
c8396062ae Integration guide: add Android (with libGDX) 2017-03-15 13:08:19 +02:00
Longri
579f49bfd6 IosBitmap.recycle() crash (#332) 2017-03-13 09:37:22 +02:00
Emux
20f1121d3a Location renderer improvements #321 2017-03-09 13:54:32 +02:00
Emux
26253a6104 Update integration guide 2017-03-08 16:26:42 +02:00
Emux
b190211e5a Android MapView in layout designer, closes #330 2017-03-08 13:17:35 +02:00
Emux
edf29d2b0e Update integration guide 2017-03-08 12:43:54 +02:00
Longri
a001f4615c iOS: remove unused Gradle settings (#329) 2017-03-07 14:51:31 +02:00
Emux
5818edc228 Graphics API #328 improvements 2017-03-07 14:41:02 +02:00
Longri
e562ebdff6 AwtCanvas draw bitmap pixel perfect (#328) 2017-03-07 14:04:16 +02:00
Emux
d08ef59278 Update readme 2017-03-07 11:40:47 +02:00
Emux
bb1d602267 Samples improvements #32 2017-03-07 11:11:31 +02:00
Emux
c1eca04ab1 Samples improvements #32 2017-03-07 11:00:49 +02:00
Emux
f6c28dc158 Update changelog and readme 2017-03-06 21:18:16 +02:00
Emux
b760eadd4d vtm-ios-example Gradle cleanup 2017-03-06 20:45:57 +02:00
Longri
7500ca1711 vtm-ios-example module (#326) 2017-03-06 20:44:38 +02:00
Emux
808671c1fb Theme texture atlas #324 improvements, #63 2017-03-06 19:53:18 +02:00
Longri
2d3ab0b6fd Theme texture atlas at runtime (#324), #63 2017-03-06 16:56:56 +02:00
Emux
6461d39357 Location renderer improvements #321 2017-03-05 19:15:59 +02:00
Emux
e0c02a83d0 Atlas multi-texture sample improvements #319 2017-03-05 16:54:07 +02:00
Longri
ca56e0fe33 BitmapPacker wrong Texture on iOS (#323), fixes #322 2017-03-05 16:28:40 +02:00
Emux
320ce5b44d Location shaders: check no rotation, fixes #321 2017-03-05 12:09:53 +02:00
Emux
f061e06d94 Location renderer: allow external shaders, move existing to glsl files, closes #317 2017-03-04 19:30:19 +02:00
Emux
d1ce52ef52 Graphics API: enable paint text alignment, closes #320 2017-03-04 18:35:10 +02:00
Emux
28961caa79 Marker clustering improvements #312 2017-03-04 18:32:13 +02:00
rodo
4b30ca3242 Marker clustering (#296) (#310) #312 2017-03-04 18:06:28 +02:00
Emux
84c45e153a Update changelog 2017-03-04 16:24:30 +02:00
Mathieu De Brito
d8001e23f6 LocationRenderer: add reverse version of shader 1 (#318) 2017-03-03 20:35:20 +02:00
Emux
559f4899dd Update Mapsforge maps 2017-03-03 13:25:39 +02:00
Emux
04f02d9ae5 Gradle 3.3, Android Gradle plugin 2.3.0, Android Maven plugin 1.5 2017-03-03 13:16:17 +02:00
Emux
acb7727234 Samples: use vector map #32 2017-03-02 21:00:22 +02:00
Emux
ac0455b1b4 Atlas multi-texture Android example #301 2017-03-02 20:13:38 +02:00
Longri
5480cd6df8 Allow multiple TextureAtlas per SymbolBucket (#303) 2017-03-02 20:12:26 +02:00
Longri
325f848969 iOS: canvas drawCircle implementation (#309) 2017-03-02 15:57:43 +02:00
Emux
ea402f77f1 Canvas fillColor: use common defaults, closes #314 2017-03-02 15:07:41 +02:00
Emux
759915861e Mapsforge sample: add scale bar #32 2017-03-02 15:07:41 +02:00
Emux
bc46217449 Android samples: use proper inheritance, fixes #311 2017-03-01 20:50:23 +02:00
Emux
d8030c1364 Update changelog 2017-03-01 13:09:40 +02:00
Longri
23d34fa00a Texture atlas: use bitmap packer based on libGdx PixmapPacker (#304) 2017-03-01 12:59:38 +02:00
Emux
29322acf87 Graphics API: draw line using floats 2017-02-28 20:58:13 +02:00
Emux
5dcffcc537 Graphics API: draw circle Desktop implementation 2017-02-28 20:43:44 +02:00
rodo
67afa0b7ab Graphics API: draw circle (#295) 2017-02-28 20:30:21 +02:00
Emux
a6ecab334c OkHttp external cache improvements, closes #135 2017-02-28 15:24:54 +02:00
Mathieu De Brito
edf89ce36b Made OKHttpEngine compliant with TileCache (#299) #135 2017-02-28 15:01:49 +02:00
Emux
4f687e6fec Mapzen theme: add regions #57 2017-02-28 14:25:34 +02:00
Robin
cfc036c7ec Mapzen theme: show neighbourhoods (#308) #57 2017-02-28 13:20:32 +02:00
Emux
3dbc44e9c2 Use Osmagray theme in samples #300 2017-02-27 21:39:56 +02:00
rodo
c9e1c81cca New Osmagray theme (#306), closes #300
- Based on OSMARENDER, just translated all colors to their grayscale equivalent
- Does not include textures, the few textures like parks will show up in color
- ... but 95% of the style is grayscale
2017-02-27 21:35:56 +02:00
Emux
f7e5544238 Symbol rotation #294 improvements 2017-02-27 20:37:54 +02:00
Longri
981536595f Symbol rotation (#294) 2017-02-27 20:14:36 +02:00
Emux
5aaa2ca96b Update changelog 2017-02-27 18:39:48 +02:00
Izumi Kawashima
b7a3844aac WebGL: skip GL_VERTEX_PROGRAM_POINT_SIZE for GL points (#305) 2017-02-27 17:28:06 +02:00
Emux
b3e2385ba5 0.7.0 2017-02-26 14:25:08 +02:00
Emux
03821e1f51 Make Travis happy 2017-02-22 12:42:05 +02:00
Emux
77dc06d650 Update Android support library 2017-02-22 11:39:12 +02:00
Emux
0cd6c48b16 Update JTS 2017-02-22 11:38:55 +02:00
Emux
8a595fd37f 0.7.0-rc2 2017-02-20 11:15:12 +02:00
Emux
967875d6b8 XmlThemeBuilder: use English case transformation rules, fixes #297 2017-02-19 22:10:17 +02:00
Emux
d60e2ef575 0.7.0-rc1 2017-02-16 14:53:42 +02:00
Emux
58ecf60d9d vtm-web: fix javadoc 2017-02-16 11:45:04 +02:00
Emux
17356e5a2b vtm-web: add in Maven deploy 2017-02-16 10:52:08 +02:00
Emux
296fdd3c13 Update Mapsforge-Maps.md 2017-02-14 10:27:07 +02:00
Emux
735acc520a Android MapView: add onDestroy method 2017-02-13 10:14:53 +02:00
Emux
ac115b1f0f TileSource: add name parameter 2017-02-12 21:09:38 +02:00
Emux
d2ba6647ea OkHttp: catch exceptions #138 2017-02-11 23:30:08 +02:00
Emux
0180c40855 Mapbox (Mapzen): use OkHttp engine #57 2017-02-11 22:33:35 +02:00
Emux
817bd13d7b OkHttp 3 engine, closes #138 2017-02-11 22:33:23 +02:00
Emux
d22dc79655 Fix readme 2017-02-07 12:48:51 +02:00
Emux
fc9ef062c0 Update readme 2017-02-07 12:37:19 +02:00
Emux
f2dda7c8eb vtm-web-app: include theme with texture atlas symbols #51 2017-02-06 20:07:55 +02:00
Emux
fdc793d9ec Samples: fix location layer visibility #32 2017-02-06 14:18:43 +02:00
Emux
3d24aade21 Samples: skip z-order in fragment #32 2017-02-06 14:17:47 +02:00
Emux
6d93aaf57f Update vtm-web-js build 2017-02-06 10:57:27 +02:00
Schedul Xor
8fc354c96a libGDX1.9.5, GWT2.8.0 applied to vtm-web (#290) 2017-02-06 10:48:19 +02:00
Emux
e30f3f7cc3 Update integration guide 2017-02-01 10:29:13 +02:00
Emux
aff2c77267 Update Android support library 2017-01-31 10:03:55 +02:00
Emux
33365b3f7d Mapbox (Mapzen) theme: cities improvements #287 #57 2017-01-29 11:43:06 +02:00
Robin
33fdc938fa Render capital cities early (#287)
Mapbox (Mapzen): Render capital cities early
2017-01-29 11:15:55 +02:00
Emux
8397d5a3be Platform identification improvements #286, closes #285 2017-01-27 20:09:33 +02:00
Longri
980e9d5e54 Add platform identification (#286) 2017-01-27 20:02:17 +02:00
Emux
bc7c55b1f8 Update readme 2017-01-27 12:01:55 +02:00
Longri
120182ec15 Texture atlas with marker overlays example (#284) 2017-01-27 11:58:27 +02:00
Emux
945b84f04f Update changelog 2017-01-26 20:54:48 +02:00
Andre Höpfner
f67c457006 Create TextureAtlas with TextureRegions from bitmaps (#283) 2017-01-26 20:53:40 +02:00
Emux
a2852b0761 Update integration guide 2017-01-22 16:38:08 +02:00
Emux
ebf5d408bc Add Mapsforge map providers list doc 2017-01-21 15:19:33 +02:00
Longri
75719eae29 iOS: improve upload texture for IosBitmap (#282) 2017-01-21 14:30:12 +02:00
Emux
5c825ea9eb Mapbox (Mapzen): locale improvements #57 2016-12-29 18:16:27 +02:00
Emux
15bc23cadf Mapbox (Mapzen): locale option #57 2016-12-29 17:56:23 +02:00
Emux
88f3283878 Render themes improvements #41 2016-12-29 17:17:48 +02:00
Emux
80848f9d2d Mapbox (Mapzen) vector tiles improvements #57 2016-12-29 16:40:49 +02:00
boldtrn
f1f5726457 Mapbox (Mapzen) vector tiles (#279), #57, fixes #271 2016-12-29 14:43:38 +02:00
Emux
2ccf3e4c64 Map limit via bounding box, closes #277 2016-12-27 12:39:31 +02:00
Emux
c8cbf8e0ce Oneway arrows in themes, closes #275 2016-12-24 16:07:43 +02:00
Emux
6544cc1081 Update changelog 2016-12-22 16:11:34 +02:00
Emux
4c72831336 Update applications list 2016-12-22 16:11:24 +02:00
Emux
06ac5142f7 Render theme callback, closes #274 2016-12-20 21:55:53 +02:00
Emux
feae45f78b Update libGDX to 1.9.5 #270 2016-12-14 15:33:26 +02:00
Emux
61b8233b97 Circles (GL points) stroke #268 2016-12-14 13:01:11 +02:00
Emux
7acbea88cc Update Android support library 2016-12-14 09:48:04 +02:00
Emux
19109516ae Circles (GL points) anti-aliasing #268 2016-12-13 19:56:44 +02:00
Emux
c1a5ad7e74 Update Android build tools 2016-12-13 09:38:24 +02:00
Emux
1a93e4ae13 TextStyle improvements 2016-12-12 12:22:15 +02:00
Emux
1de6ca8fb7 Render styles improvements 2016-12-11 15:17:42 +02:00
Emux
02db7ca08d ExtrusionStyle: add StyleBuilder interface 2016-12-11 11:42:48 +02:00
Emux
e9bb7aaae4 Render buckets improvements 2016-12-09 20:36:48 +02:00
Emux
989e9c2ae8 Update readme 2016-12-09 20:00:05 +02:00
Emux
e8f41cd339 Update applications list 2016-12-09 19:43:23 +02:00
Emux
eabd90d14c Applications list: update an app's license 2016-12-09 10:48:56 +02:00
Emux
3e4aad4d51 LocationLayer: move lazy enable to application #171 2016-12-08 20:26:50 +02:00
Emux
b6dc72bbb6 Circle map style: use GL quads or GL points #122 2016-12-08 14:30:05 +02:00
Emux
4cd11462da SVG resources scaling, closes #214 2016-12-08 12:06:14 +02:00
Emux
6344542b10 SymbolStyle: add style builder #214 2016-12-07 20:16:11 +02:00
Emux
e0031ae8aa CircleStyle fix #122 2016-12-07 15:57:36 +02:00
Emux
229ea0b350 CircleStyle: add style builder #122 2016-12-07 15:12:50 +02:00
Emux
0a5d08a908 Update Gradle Android plugin 2016-12-07 09:40:11 +02:00
Emux
aed54c9a49 Update changelog 2016-12-06 21:38:49 +02:00
Emux
1a3bf4e4fe Render theme improvements #41 2016-12-06 21:16:38 +02:00
Emux
591ae03667 GL shader version, closes #265 2016-12-06 21:07:53 +02:00
Emux
3a191fb513 Circle map style #122 2016-12-06 21:07:53 +02:00
Andrey Novikov
2821d8ddb8 Circle map style rendering (#202) #122 2016-12-04 11:26:12 +02:00
Emux
71d7b71035 Map.getMapPosition at animation end option 2016-12-02 19:25:36 +02:00
Emux
85858911fa MapPosition animation sample with queue 2016-12-02 13:04:02 +02:00
Emux
0a92c84668 GDX double tap zoom, closes #263 2016-12-02 10:48:55 +02:00
Emux
c21d7b4390 Android example for render theme styles #93, closes #255 2016-12-01 21:08:12 +02:00
Emux
38a9c71bc2 MapPosition animation sample improvements #252 2016-12-01 19:59:43 +02:00
Mathieu De Brito
2573e458d5 Add sample showing MapPosition animations not merge (#252) 2016-12-01 19:57:13 +02:00
Emux
25a9891133 Samples reorganization #32 2016-11-28 21:10:07 +02:00
Andrey Novikov
8ee4e5fb8c OSMUtils: Treat amenity as area in heuristic (#262) 2016-11-28 20:14:33 +02:00
Emux
a38b054228 OSMUtils: include correct copyrights #35 2016-11-28 20:03:12 +02:00
Andrey Novikov
d9bf94da99 Fix zoom animation not executed sometimes (#261) 2016-11-28 15:42:44 +02:00
Longri
77653096f9 Add events for scale / rotate / tilt by user (#256) 2016-11-28 15:02:06 +02:00
Andrey Novikov
5f534656ea Improved gestures: use VTM Task for asynchronous calls (#260) #253 2016-11-28 14:41:32 +02:00
Emux
ba93445259 Improved gestures: parallel system and samples #253 2016-11-28 14:41:32 +02:00
Andrey Novikov
71f7c45b21 Improved gestures (#249) #253 2016-11-28 14:28:44 +02:00
Emux
ca5e34e1fb Render themes new SVG resources, closes #251 2016-11-27 17:06:55 +02:00
Emux
d937f3516c Samples: add map events in desktop marker example #32 2016-11-25 09:50:18 +02:00
Emux
a8909fca08 GDX: improve keyboard shortcuts 2016-11-24 16:20:30 +02:00
Emux
b39feae045 Samples cleanup 2016-11-24 10:37:27 +02:00
Emux
9f4ef47b95 Gradle: enhance clean tasks in vtm web apps 2016-11-24 10:19:35 +02:00
Emux
25e79bac55 Update Android build tools 2016-11-23 09:41:05 +02:00
Emux
311f4c7929 Samples: map events improvements #32 2016-11-22 21:07:28 +02:00
Emux
557e1858a7 Android: fix quick scale vs long press, fixes #250 2016-11-22 20:39:47 +02:00
Emux
16fa42d462 Marker examples: add (map) long press events #32 2016-11-22 20:37:05 +02:00
Emux
1133edb83d vtm-app: fix location layer 2016-11-22 12:55:52 +02:00
Izumi Kawashima
f6dbeba3d8 Check and clamp bearing range each time it's set (#248) 2016-11-21 20:01:34 +02:00
Emux
bf8f0745a6 Fix Travis build 2016-11-21 12:59:07 +02:00
Emux
829e45224f Animator easing: improvements and backwards API compatibility (#242) #246 2016-11-21 12:42:48 +02:00
Schedul Xor
acde5d565d Added easing functions which currently works with Animator (#242) 2016-11-21 12:38:01 +02:00
Emux
f0a652faf3 vtm-web modules: minor cleanup #51 2016-11-21 11:20:31 +02:00
Schedul Xor
41867344e2 Support TextureRegion to be used for MarkerSymbol (#245) 2016-11-21 10:49:04 +02:00
Izumi Kawashima
0c39ff8be0 Made {X},{Y},{Z} customizable in derived tile sources for tile URL (#244) 2016-11-21 10:25:43 +02:00
Emux
6f78f08a04 vtm-web: update documentation 2016-11-20 19:40:44 +02:00
Emux
3388e1401f Improve code / xml formatting #54 2016-11-20 19:26:38 +02:00
Izumi Kawashima
308497ffa6 Update vtm-web modules (#240) #51 2016-11-20 19:13:00 +02:00
Izumi Kawashima
bfa5a095f0 UrlTileSource: use StringBuilder instead of String concatenation (#241) 2016-11-20 19:03:57 +02:00
Emux
96be36edb8 Update badges 2016-11-19 17:28:31 +02:00
Emux
7c9c3732fb Osmarender theme: fix 'scrub' overlap without tessellation '#41 2016-11-16 21:08:01 +02:00
Emux
add62c9fe8 Location layer: lazy rendering start for performance #171 2016-11-16 14:18:14 +02:00
Emux
4aaa1ce620 AwtPaint: fix getColor 2016-11-16 10:57:13 +02:00
Emux
aa63b49e5a Render themes improvements #41 2016-11-16 10:04:19 +02:00
Emux
1f1d91202c Update Android support lib 2016-11-15 09:26:03 +02:00
Emux
51eae28926 MapDatabase: use TileClipper buffer based on dpi, #231 2016-11-13 17:19:13 +02:00
Emux
58b5f2741b Use baseline 160dpi in scaling, closes #236 2016-11-13 16:52:29 +02:00
Emux
d82faad435 Render themes improvements #41 2016-11-13 16:52:29 +02:00
Emux
fc8223bfc8 Tile grid enhance color #238 2016-11-13 16:52:22 +02:00
Emux
3584c4be1e Tile grid layer scaling, closes #238 2016-11-13 11:45:44 +02:00
Emux
001dbe8447 House numbers (nodes) mix with symbols, fixes #234 2016-11-12 16:19:29 +02:00
Emux
54feb7a25e MapDatabase: clear tags with each element read, #234, fixes #235 2016-11-12 16:17:39 +02:00
Emux
ea2a94f76b Update changelog 2016-11-10 21:58:35 +02:00
Emux
b6bfbc612a Render themes improvements #41 2016-11-10 21:25:17 +02:00
Emux
1d545fd804 Mapbox vector tiles: use tessellation in water #57 2016-11-10 15:09:31 +02:00
Emux
3acf77c102 Render themes improvements #41 2016-11-10 14:22:59 +02:00
Emux
6dfe2df2fb Update Travis 2016-11-09 13:00:12 +02:00
Mathieu De Brito
6cb40e1c15 Android samples: add fragment example (#233) 2016-11-09 13:00:02 +02:00
Emux
afd03809e8 Render theme styles sample improvements #93 2016-11-09 11:44:45 +02:00
Emux
efa3cb0231 Render theme styles sample #93 2016-11-08 12:16:02 +02:00
Emux
a709bd2623 MapDatabase: use TileClipper buffer as half the tile size, #231 2016-11-07 21:53:53 +02:00
Emux
439f2b20ff Fix house numbers (nodes) visibility (with new maps), fixes #168 2016-11-05 17:49:28 +02:00
Emux
877d217f31 Update dependencies 2016-11-05 13:53:05 +02:00
Emux
885264ad8c Gradle: declare compile time only dependencies with Java plugin #229 2016-11-04 22:06:32 +02:00
Emux
e224a7cf5b Samples: minor improvements #32 2016-11-02 14:06:36 +02:00
Emux
e10a223ea6 Mapsforge: multiple map files with zoom levels, #208 2016-11-02 13:54:31 +02:00
Emux
f85453e60c Render themes: use tessellation in sea #208 2016-11-02 10:40:25 +02:00
Emux
a6b3d7b0c2 Mapsforge: multiple map files, closes #208 2016-11-02 10:32:30 +02:00
Emux
dc15ba5f34 Update documentation 2016-11-02 10:02:34 +02:00
pedrop
1d7afaf8de ItemizedLayer: API enhancements for adding Collection of any MarkerInterface implementation (#211) 2016-10-31 20:29:22 +02:00
pedrop
422d81d665 PathLayer: API enhancements for adding Collection of any GeoPoint extension (#211) 2016-10-31 19:58:13 +02:00
Emux
4b55043dcc MercatorProjection.latitudeToY not work at > ±85.05113°, fixes #222 2016-10-31 15:13:31 +02:00
Emux
7885529fff Update changelog #108 2016-10-30 17:43:02 +02:00
Emux
2c610f5e0b PathLayer: draw line improvements by @Bezzu, fixes #108 2016-10-30 17:31:22 +02:00
Emux
64a586dde8 MapFileTileSource: zoom level improvements, closes #219 2016-10-30 16:14:54 +02:00
Emux
c1f65144df Mapbox tile source: use new Mapzen production url #57 2016-10-29 22:12:56 +03:00
Emux
ad2ee3f40e Mapzem .mvt theme: update with SVG and various improvements #57 2016-10-29 21:46:16 +03:00
Emux
01365686fa Fix render theme schema 'src' regular expression 2016-10-29 21:18:22 +03:00
Emux
dece13ddc9 Mapbox vector tiles improvements and example #57 2016-10-29 20:56:01 +03:00
Emux
05e9e0cdc8 Mapbox vector tiles by @hjanetzek #57 2016-10-29 18:53:52 +03:00
Emux
a9283dd408 Render theme improvements #41 2016-10-28 20:43:16 +03:00
Emux
53ca77d18a Update changelog 2016-10-28 17:39:11 +03:00
Andrey Novikov
97654f0670 Polygon label position (#204), #80
- Fix infinite recursion on invalid polygons
- Allow setting area-size for text styles
- Skip unnecessary calculations if label is outside of visible area
2016-10-28 17:36:10 +03:00
Emux
cbd0ac01df Polygon label position (minor improvements) (#204), #80 2016-10-28 17:35:50 +03:00
Andrey Novikov
ca841f5181 Polygon label position enhancements (#204), closes #80 2016-10-28 17:34:53 +03:00
Emux
a322768f8a 0.6.0 2016-10-28 12:26:13 +03:00
Emux
fc7bb2df9b 0.6.0-rc3 2016-10-22 13:22:34 +03:00
Emux
062bb8d573 Update Android and Gradle plugin versions 2016-10-21 20:08:17 +03:00
szantai78
ccdea3b663 LocationRenderer: revert shader precision from high to medium #209, fixes #207 2016-10-21 19:18:19 +03:00
Emux
985bbc3f36 0.6.0-rc2 2016-10-16 15:55:30 +03:00
Emux
aa5fc79681 libGDX desktop: disable OpenAL 2016-10-15 19:05:03 +03:00
Emux
58095f31a4 Enable location layer rendering when needed #171 2016-10-14 19:39:43 +03:00
Emux
e53523b82a Add location layer and Samples example #171 2016-10-14 11:36:34 +03:00
Emux
e5c62c9bc4 Gradle: update Android plugin 2016-10-11 09:09:54 +03:00
Emux
3c1091d8e0 BoundingBox: fix longitude span #200 2016-10-09 21:12:47 +03:00
Emux
d4f3c32358 0.6.0-rc1 2016-10-08 18:47:05 +03:00
Emux
75b22fee2d Fix Travis build #200 #201 2016-10-08 16:36:51 +03:00
Emux
8a27d14f9a GeoPoint improvements, closes #201 2016-10-08 16:17:10 +03:00
Emux
ac7706eb7a BoundingBox improvements, closes #200 2016-10-08 15:57:13 +03:00
Longri
4994d611fe Update iOS integration guide #29 2016-10-08 11:29:39 +03:00
Longri
1ac57cb719 Update applications list 2016-10-08 11:17:32 +03:00
Emux
bed6f8f0f2 Samples: multiple map views improvements #196 #194 2016-10-02 22:06:33 +03:00
Emux
e8a105d892 Merge pull request #196 from mar-v-in/multimap
Multi Map Sample
2016-10-02 22:05:59 +03:00
Marvin W
e57bacb957 Multi Map Sample
As proposed in #194
2016-10-02 19:28:07 +02:00
Emux
311886e23b Update Android build tools 2016-09-29 10:11:31 +03:00
Emux
1e745a6e9b C-style string comparisons, fixes #190 2016-09-29 10:00:29 +03:00
Andrey Novikov
41c35ea114 Fix event listener unbinding #186, fixes #192 2016-09-28 22:33:58 +03:00
Andrey Novikov
2b24bf82f9 VectorTileLayer: postpone zoom limits initialization #188, closes #191 2016-09-28 20:54:40 +03:00
Emux
929beb87fc Merge pull request #187 from andreynovikov/oscimap-tile-decoder
Make TileDecoder public
2016-09-28 20:17:19 +03:00
Andrey Novikov
1a1d94e755 S3DBLayer: fix C-style string comparisons #189, #190 2016-09-28 20:06:19 +03:00
Andrey Novikov
52bb54c006 TagSet: fix C-style string comparisons #185, fixes #190 2016-09-28 20:00:22 +03:00
Andrey Novikov
96f0a60b44 Make tile decoder public 2016-09-28 15:10:06 +03:00
Emux
98924b83af Travis: publish snapshots to Sonatype OSSRH #165 2016-09-28 13:58:24 +03:00
Emux
050114eff3 PolygonBucket: make enableTexture adjustable #179 2016-09-26 15:31:51 +03:00
Emux
ea884f56b1 Update integration guide 2016-09-26 11:02:27 +03:00
Emux
cb732c6823 Clean old project.properties 2016-09-25 19:25:54 +03:00
Emux
bf420db0f9 Deprecate vtm-android-start module, closes #184 2016-09-25 19:09:13 +03:00
Emux
2a2b30f9fc Samples: update with scaled tile size #183 2016-09-25 19:02:08 +03:00
Emux
c991666d97 Tile size based on scale factor, closes #183 2016-09-25 18:58:33 +03:00
Emux
aa3aec0218 Tile source: store tile size, closes #182 2016-09-25 18:24:13 +03:00
Emux
ec4f12b576 Viewport: make default limits public 2016-09-24 15:33:44 +03:00
Emux
1b9e9206cb Render themes: allow custom scaling #67, closes #180 2016-09-24 15:17:09 +03:00
Emux
f9aa723e53 Render themes: scale line stipple #67, fixes #126 2016-09-24 15:16:59 +03:00
Emux
e20196a46a Render themes: fix scaling #67 2016-09-24 15:16:59 +03:00
Longri
f944dab28f Scale some theme elements #178, #67 2016-09-24 15:16:52 +03:00
Longri
f19ab87abe Set scale value for viewport on mapRenderer #176, closes #177 2016-09-23 19:51:41 +03:00
Emux
d937a4d6bb VectorTileLayer: check tile source on detach by @Longri, fixes #175 2016-09-21 13:09:36 +03:00
Emux
5c370cf3ab Update Android Gradle plugin to 2.2.0 2016-09-20 10:24:59 +03:00
Emux
9b460b0f3b Location renderer: fix indicator minimum size #171 2016-09-17 23:01:26 +03:00
Erik Duisters
bc0bbcb4b5 Marker interface: more generics definitions #172 2016-09-17 22:44:59 +03:00
Emux
0c898bf682 Location renderer: use highp in vertex and fragment shaders #171 2016-09-17 20:07:17 +03:00
Emux
50ccecc259 Location renderer: activate all fragment shaders #171 2016-09-17 20:04:55 +03:00
Emux
769dd696e3 Location renderer with many improvements and fixes, closes #171 2016-09-17 20:02:43 +03:00
Erik Duisters
7cdeacd1c2 Marker interface making marker handling more flexible 2016-09-17 17:16:04 +03:00
Emux
3703cf7e00 Deprecate CI server 2016-09-17 15:53:49 +03:00
Emux
2bded1e05f Update project deployment description 2016-09-17 15:38:02 +03:00
Emux
ac6877fcfc Gradle: deprecate iOS jar-with-dependencies artifact #46 2016-09-17 10:59:47 +03:00
Emux
319a1b6663 Overpass API: fix deprecated call 2016-09-17 10:58:02 +03:00
Emux
7427624275 libGDX mouse wheel zoom with pivot, closes #169 2016-09-16 10:09:26 +03:00
Emux
8f58966e9e Render themes: enable more house numbers rules #168 #41 2016-09-16 09:47:51 +03:00
Emux
10060e4001 SNAPSHOT publish: fix repository in docs, #165 2016-09-12 19:53:01 +03:00
Emux
bd8cdd5d6c Gradle: deprecate application plugin, #46 2016-09-12 10:27:15 +03:00
Emux
50d37971b2 Update README.md 2016-09-10 15:46:18 +03:00
Emux
7d56260c12 Fix changelog 2016-09-09 14:35:40 +03:00
Emux
801eda470d SNAPSHOT builds publish to Sonatype OSSRH, closes #165 2016-09-09 13:23:51 +03:00
Emux
1328d050e0 libGDX 1.9.4 update, closes #164 2016-09-08 20:05:41 +03:00
Emux
a7356e5723 Assets render theme, closes #162 2016-09-07 20:28:51 +03:00
Emux
41921aa98d Update integration guide 2016-09-07 10:05:08 +03:00
Emux
7c97ac5101 - Render theme styles, closes #93
- Stream render theme, closes #161
2016-09-06 21:26:18 +03:00
Emux
290aee9a8b Render themes: symbol improvements, #41 2016-09-06 14:46:20 +03:00
Emux
12869c6718 Viewport size change not render map completely, fixes #160 2016-09-06 13:52:21 +03:00
Erik Duisters
ab98b676fc A viewport should also be considered changed if its dimensions have changed. This will cause the tile layer to be rendered correctly after an orientation change. #160 2016-09-06 13:31:17 +03:00
Emux
9c1574eb41 LineStyle: use style from parent graphical primitive 2016-09-04 12:10:16 +03:00
Emux
3d83c188e0 Render theme positive rules building, fixes #156 2016-09-03 22:42:39 +03:00
Emux
164950e399 Render theme schema: fix src pattern, #66 2016-09-03 17:21:09 +03:00
Emux
3a8db9cc7c ScaleBar disappears sometimes fix by Erik Duisters, fixes #155 2016-08-31 09:30:20 +03:00
Emux
b03fe48760 Android 7 Nougat 2016-08-28 20:06:17 +03:00
Emux
33b68fd0d6 libGDX level zoom with keys, fixes #154 2016-08-27 19:00:34 +03:00
Emux
b18dae5bef Samples: fix some folder permissions, #32 2016-08-25 20:05:26 +03:00
Emux
083fe22f08 libGDX marker layer example, #151 2016-08-23 14:05:17 +03:00
Emux
ebd07950a4 libGDX layer gestures, closes #151 2016-08-23 14:03:09 +03:00
Emux
46f4d592d3 GdxMap: remove mandatory tile grid 2016-08-23 12:30:35 +03:00
Emux
dd2f240792 ItemizedLayer API enhancements, #6 2016-08-23 11:26:45 +03:00
Emux
79d209a225 Applications list, closes #150 2016-08-23 10:36:28 +03:00
Emux
55544b97d9 vtm-desktop: enable MSAA, #149 2016-08-22 13:54:13 +03:00
Emux
81f105e2db vtm-android-gdx: enable MSAA, #148 2016-08-22 13:53:53 +03:00
Emux
19338fab3a Shaders: check GL_OES_standard_derivatives extension, fixes #145 2016-08-20 13:28:51 +03:00
Emux
c4d7b30f0d Viewport: enhance toScreenPoint with relative to center option, fixes #81 2016-08-20 13:21:31 +03:00
Emux
4fb8234e2d vtm-http module, closes #140 2016-08-19 22:26:14 +03:00
Emux
99f45bfa22 MapDatabase: avoid additional simplification, fixes #39 2016-08-19 19:43:44 +03:00
Emux
c77e131721 texture_layer shader: check for 0.0 and -0.0 in mod result by @hjanetzek, #139 2016-08-19 13:27:00 +03:00
Andrey Novikov
7355463090 Deprecate base layer, closes #102 2016-08-19 11:39:33 +03:00
Emux
3a1ee523bc texture_layer shader: avoid == in floating point number comparison, fixes #139 2016-08-19 11:17:59 +03:00
Emux
52b362be8b Render themes: fix some symbol names, #41 2016-08-17 20:42:03 +03:00
Emux
1101e894cd Update Gradle 2.14.1, Android plugin 2.1.3, Android Maven plugin 1.4.1 2016-08-16 14:05:55 +03:00
Emux
6e6984f4ed Merge pull request #132 from andreynovikov/set-num-loaders
Set number of loaders
2016-08-15 13:32:33 +03:00
Andrey Novikov
8ce3e2e488 Set number of loaders 2016-08-15 11:39:33 +03:00
Emux
ba913eb484 LWJGL desktop libGDX backend, closes #129 2016-08-14 13:23:41 +03:00
Emux
0d64dfedd4 LineBucket: fix Cap modes, #107, #128 2016-08-13 18:40:47 +03:00
Stephan Leuschner
1fa9f133bd - Add MarkerRendererFactory interface for custom MarkerRenderer
- Enhance MarkerLayer and ItemizedLayer constructors
- Allow setting level to RenderBucket
2016-08-10 14:42:58 +03:00
Stephan Leuschner
67357fe2f0 fire new ANIM_START event when animation is started, do not fire again until all animations are done 2016-08-10 13:56:29 +03:00
Stephan Leuschner
136c323a75 save app context to avoid leaking activity 2016-08-09 12:42:13 +03:00
Emux
1db23decca TileCache: fix samples, improves #112, closes #116 2016-08-09 12:20:47 +03:00
Stephan Leuschner
85adc04a05 fix TileCache, cacheDirectory was ignored 2016-08-09 11:45:16 +03:00
Emux
b434b38872 Samples: fix BitmapLayerTest, #32 2016-08-08 20:00:40 +03:00
Emux
a922ae7e78 Remove some bitmap map sources due to licenses, closes #110 2016-08-08 19:49:14 +03:00
Emux
435cc602a7 Update changelog, #105 2016-08-07 20:07:27 +03:00
Emux
dd7d37c745 Move to master-SNAPSHOT, closes #106 2016-08-07 20:03:23 +03:00
Emux
f55fb501a0 Line texture: use fixed intermediate scaling, #105 2016-08-07 20:03:12 +03:00
Emux
b58dbc6a16 LineBucket: enable Cap modes, fixes #107 2016-08-07 20:02:51 +03:00
Emux
14108fcfe7 Line texture: randomize offset rendering, #105 2016-08-07 20:02:40 +03:00
Emux
b32b5ceb0b Line texture: JTS PathLayer support, #105 2016-08-07 20:02:27 +03:00
Emux
de74719672 Line texture: use highp in vertex and fragment shaders, #105 2016-08-07 20:02:10 +03:00
Emux
a4934a50cd Line texture: fix fragment shader, #105 2016-08-07 20:01:56 +03:00
Emux
c926a714db Line texture: fix scale precision, #105 2016-08-07 20:01:42 +03:00
Emux
88611257f1 Line texture: stipple implementation, PathLayer support, #105 2016-08-07 20:01:19 +03:00
Emux
4a663f949e vtm-jts: PathLayer improvements, #53 2016-08-02 20:10:29 +03:00
Emux
5eae87e892 RobovmLauncher: remove redundant init call, #92 2016-08-02 19:58:10 +03:00
Longri
a9bb6e3788 Graphics API: implement IosCanvas.drawLine(), IosCanvas.fillColor() and IosPaint.getTextHeight(), #92 2016-08-02 19:27:33 +03:00
Emux
f736530049 Samples: fix MarkerOverlayActivity example, #32 2016-08-02 10:40:21 +03:00
Emux
cfa9326e2b Separate layer groups example, #103 2016-08-02 10:09:39 +03:00
Emux
8eff27c303 Update changelog 2016-08-01 20:17:42 +03:00
Emux
0f06f854c7 SimpleMapActivity: fix layers z-order, #103 2016-08-01 20:08:07 +03:00
Andrey Novikov
89198c1a30 Add support for layer groups, closes #103 2016-08-01 20:06:17 +03:00
Emux
8dce91b035 AwtPaint: font kerning improvements, #92 2016-07-28 13:29:55 +03:00
Emux
49a81cbe04 Map scale bar: multi-platform implementation, closes #84 2016-07-28 11:40:41 +03:00
Emux
462be14edb Graphics API enhancements, closes #92 2016-07-28 11:33:40 +03:00
Emux
94c30c1e10 Render themes: minor improvements , #41 2016-07-28 09:35:33 +03:00
Emux
fa637cd202 Update changelog 2016-07-27 19:30:21 +03:00
Emux
42fd941d64 Group layer implementation, closes #99 2016-07-27 19:23:11 +03:00
Emux
6801102631 vtm-android: remove unused classes, #97 2016-07-26 19:25:52 +03:00
Emux
77cf4e7b8f vtm-android & vtm-android-gdx commons, closes #97 2016-07-26 19:16:53 +03:00
Andrey Novikov
6f0a008ffd Apply theme to all vector layers 2016-07-25 22:00:26 +03:00
Emux
70c5812b09 Add Changelog, closes #94 2016-07-24 18:58:13 +03:00
Emux
e39c099bdc Update iOS documentation, #83 2016-07-24 11:46:49 +03:00
Emux
f0a849f4c7 Update Integration Guide documentation, #83 2016-07-24 11:42:52 +03:00
Emux
0f276c52f3 Add Integration Guide documentation, closes #83 2016-07-24 11:28:13 +03:00
Emux
ea36c8c69f Map scale bar: allow scaling its size #84 2016-07-22 14:56:47 +03:00
Emux
b96890b24b Update readme 2016-07-22 14:36:08 +03:00
Emux
1700936872 Default theme: allow buildings rendering without BuildingLayer, fixes #91 2016-07-22 12:15:00 +03:00
Emux
4904eaf2d3 Gradle: improve scripts, #46 2016-07-22 09:55:45 +03:00
Emux
c88b2799b1 vtm-app: update third-party links, #90 2016-07-22 09:10:10 +03:00
Emux
436b66be82 vtm-app: revive / update with latest VTM, closes #90 2016-07-21 22:23:45 +03:00
Emux
c67b35a277 Map scale bar: Android new implementation, #84, closes #88 2016-07-21 15:55:08 +03:00
Emux
4eebbcea2d GLViewport: fix documentation, #87 2016-07-21 13:44:51 +03:00
Emux
faada6625f Screen position for bitmap renderering, closes #87 2016-07-21 13:38:29 +03:00
Emux
52da03ce59 Merge pull request #79 from andreynovikov/bitmap-renderer-screen-offset
Set screen offset for bitmap rendering
2016-07-21 13:34:25 +03:00
Emux
ecb76f9af7 Desktop native libraries split per platform, closes #86 2016-07-21 10:38:34 +03:00
Emux
f1cc7c98b0 Gradle: remove logger properties from produced artifacts, #46 2016-07-21 09:06:40 +03:00
Emux
dde1025e73 Gradle: move logger properties to proper module, #46 2016-07-20 22:53:08 +03:00
Emux
8a2afd7b40 Android native libraries complete collection, closes #85 2016-07-20 21:46:39 +03:00
Emux
243aca9ae9 Gradle: simplify tasks, #46 2016-07-20 19:04:04 +03:00
Emux
d01c3eecf3 vtm-android: remove unused resources 2016-07-20 19:00:13 +03:00
Emux
942ed10344 Gradle: improve dependencies hierarchy, #46 2016-07-19 21:56:37 +03:00
Emux
938e8167dc vtm-ios: remove redundant dependencies, #29 2016-07-19 21:17:06 +03:00
Emux
8b599dbf53 Android samples: remove Android Support dependencies, #32 2016-07-19 20:49:58 +03:00
Emux
11f02128e6 Jar with dependencies, closes #82 2016-07-19 20:15:12 +03:00
Emux
440ae04a7e SVG symbols: improve documentation, #74 2016-07-19 15:58:56 +03:00
Emux
3d6cad1a0c SVG symbols: allow custom creation, #74 2016-07-19 15:50:54 +03:00
Emux
21ea5a7842 Render themes: SVG resources on iOS, improves #69 2016-07-19 14:43:38 +03:00
Longri
4c5de7453d Render themes: SVG resources on iOS 2016-07-19 14:25:35 +03:00
Andrey Novikov
418329441f Set screen offset for bitmap rendering 2016-07-19 12:24:37 +03:00
Emux
166b0ab772 MarkerItem: make properties mutable, closes #78 2016-07-19 11:43:26 +03:00
Emux
5fb07499a7 BoundingBox: make mutable, closes #58 2016-07-19 11:13:05 +03:00
Emux
c8ff7a9e07 MapEventLayer: avoid unnecessary Move events, #76 2016-07-19 11:03:12 +03:00
Andrey Novikov
a8b341763e GeoPoint: bearing calculation 2016-07-19 10:55:17 +03:00
Emux
bb95008197 MapEventLayer: reuse MapPosition instance, improves #76 2016-07-19 10:32:20 +03:00
Emux
e08966c418 Merge pull request #76 from andreynovikov/move-event
Add event for moving map by user
2016-07-19 10:25:48 +03:00
Emux
7347844c48 DefaultSources: add copyright notice, #75 2016-07-19 09:57:37 +03:00
Emux
d9c65a92ba Merge pull request #75 from andreynovikov/default-sources
New and fixed default bitmap sources
2016-07-18 19:32:24 +03:00
Emux
05184e7f5f SVG symbols custom default size, closes #74 2016-07-18 19:21:34 +03:00
Andrey Novikov
68c72437b4 Add event for moving map by user 2016-07-18 19:16:32 +03:00
Andrey Novikov
561ec4be85 New and fixed default bitmap sources 2016-07-18 19:09:03 +03:00
Emux
a5679ce214 Bitmap.getPngEncodedData improvements, PR #71 2016-07-18 11:06:03 +03:00
Longri
44b40608f6 Bitmap: get png encoded data implementation 2016-07-18 11:06:03 +03:00
Emux
fab7020d3d vtm-android-gdx: make example dpi aware, fixes #70 2016-07-17 16:51:56 +03:00
Emux
7f42be2d67 MarkerSymbol: remove redundant bitmap array 2016-07-17 16:19:53 +03:00
Emux
3fc1583649 Render themes: add SVG symbols collection, closes #68 2016-07-16 21:49:03 +03:00
Emux
726d825e07 IosGraphics: loadBitmapAssetImpl as other platforms, #29 2016-07-16 21:49:03 +03:00
Emux
1d46b2f63a Render themes: allow caption symbols without texture atlas, #64 2016-07-16 21:49:03 +03:00
Emux
1cfae3a47f Render themes: scale 'dy' rendering instruction, #67 2016-07-16 21:48:47 +03:00
Emux
fed2cd05e4 Render themes: SVG resources, closes #60 2016-07-16 21:42:42 +03:00
Emux
9b4cf470f9 Render themes: support location prefixes in resources, closes #66 2016-07-16 21:42:42 +03:00
Emux
73bc26dd2d Render themes: read resources from files, besides assets, closes #65 2016-07-16 21:42:42 +03:00
Emux
57a152d0aa Render themes: allow symbols without texture atlas, closes #64 2016-07-16 21:42:42 +03:00
Emux
081e6b8f2b vtm-ios: remove some IDE generated comments, #29 2016-07-16 21:42:27 +03:00
Emux
ba00a5384d Render themes: texture atlas separation, closes #59 2016-07-13 20:23:35 +03:00
Emux
43ca550832 Improve code / xml formatting, #54 2016-07-12 19:53:47 +03:00
Emux
e793e8851b Improve code / xml formatting, closes #54 2016-07-09 19:45:23 +03:00
Emux
7919d0ab9c Update gitignore 2016-07-07 22:25:33 +03:00
Emux
915046fb9a Samples: various improvements, #32 2016-07-07 21:06:11 +03:00
Emux
37ace257cf Create vtm-jts module, closes #53 2016-07-07 20:16:33 +03:00
Emux
e74052c164 vtm-jeo: use https in repository, #52 2016-07-07 18:59:08 +03:00
Emux
c02cf5792f Update vtm-jeo module, closes #52 2016-07-07 14:05:15 +03:00
Emux
51f3e2368b Mapzen vector tiles: fix example, provide vtm-stylesheet, #50 2016-07-06 17:24:29 +03:00
Emux
7a88524343 Add vector tile api key parameter, closes #49 2016-07-06 17:12:48 +03:00
Emux
dfe4a10bf0 GeoJSON vector tiles: add road labels, #48 2016-07-06 15:25:38 +03:00
Emux
1882806b05 OsmJson sample: more improvements, #32 2016-07-05 22:20:34 +03:00
Emux
5d56d81d83 Android samples: fix OsmJson, #32 2016-07-05 21:56:33 +03:00
Emux
0061b3ae7e Android samples: improve implementation, #32 2016-07-05 21:54:18 +03:00
Emux
11caa2a2d3 Update gitignore 2016-07-05 19:30:08 +03:00
Emux
48d6b3e5ba Gradle: add missing logger in vtm-tests, #46 2016-07-05 19:25:19 +03:00
Emux
178c88c20c vtm-android-gdx: disable apk artifact deployment, #46, #44 2016-07-04 23:32:27 +03:00
Emux
d6a65ff731 Normalize all the line endings 2016-07-04 20:58:33 +03:00
Emux
53cafa2f3b Merge pull request #47 from Longri/fix-iOS-native
Link to new native folder. Don't copy to build folder
2016-07-04 20:34:40 +03:00
Longri
122618c00a Link to new native folder. Don't copy to build folder 2016-07-04 18:38:49 +02:00
Emux
c389abc7a2 Native libraries publishing artifacts, closes #43 2016-07-04 16:07:58 +03:00
Emux
b3217ae2c0 vtm-android-gdx: add as dependency module and in deployment, #46, #44 2016-07-04 15:12:56 +03:00
Emux
234bd625e9 gitattributes: dealing with line endings 2016-07-04 14:18:02 +03:00
Emux
2a50f89b90 Use a main gitignore 2016-07-04 14:14:08 +03:00
Emux
bb7aa34905 Gradle: add missing Android loggers, #46 2016-07-04 11:30:06 +03:00
Emux
59f74664a2 Update documentation 2016-07-04 10:42:50 +03:00
Emux
7a1d56d888 Samples: various improvements, #32 2016-07-03 23:40:05 +03:00
Emux
6b69c9cf94 Automated Gradle project deployment to Sonatype OSSRH, closes #44 2016-07-03 22:03:22 +03:00
Emux
9dfb2678c4 Automated Gradle project deployment to Sonatype OSSRH, closes #44 2016-07-03 21:58:11 +03:00
Emux
7e24b9cf4a Automated Gradle project deployment to Sonatype OSSRH, closes #44 2016-07-03 21:51:53 +03:00
Emux
507f9eca1e Disable doclint in JDK 8 Javadoc, closes #45 2016-07-03 21:05:58 +03:00
Emux
eca77a0afc Gradle build refactoring, closes #46 2016-07-03 20:43:32 +03:00
Longri
11d7002841 Enable / fix iOS module, closes #29 2016-06-28 21:41:23 +03:00
Emux
2b171739aa Render themes: text size improvements, #41 2016-06-27 22:10:35 +03:00
Emux
0953862f72 Render themes: text size improvements, #41 2016-06-27 21:45:12 +03:00
Emux
d719542018 Samples: improve MapsforgeMapActivity, #32 2016-06-27 13:32:55 +03:00
Emux
d4c6a0730d Mapsforge: deprecate water tiles rendering, closes #40 2016-06-27 12:27:56 +03:00
Emux
314c2df66b Samples: map file as command-line argument in MapsforgeTest, #32 2016-06-26 11:32:00 +03:00
Emux
9cc2aad1ec Samples: add debug grid in MapsforgeMapActivity, #32 2016-06-25 20:07:45 +03:00
Emux
d7ec1e0ac3 MapDatabase: avoid oversimplification for Mapsforge land polygons, closes #39 2016-06-25 20:07:25 +03:00
Emux
af9481d084 Mapsforge render themes: add sea & nosea tags with tessellation, remove coastline, remove water tile outline, closes #38 2016-06-25 20:06:54 +03:00
Emux
9b7d893fd5 Render themes: add tessellation option in area style, closes #37 2016-06-25 20:06:36 +03:00
Emux
d97511e1e1 VectorTileLoader: use mesh layer and tessellation option, closes #36 2016-06-25 20:06:04 +03:00
Emux
9bd1cd1159 Mapsforge: heuristic determine if a map element is an area, closes #35 2016-06-25 20:05:48 +03:00
Emux
d5954d350f Mapsforge: multilingual vector map files v4, closes #34 2016-06-25 20:05:07 +03:00
Emux
bbdc431b9a GdxMapApp: reduce default size 2016-06-25 15:15:23 +03:00
Emux
7b00161184 Fix Travis builds 2016-06-23 13:50:10 +03:00
Emux
bb8dd4db7c Mapsforge: add unread POI tags, fixes #33 2016-06-23 09:43:19 +03:00
Emux
1bfd76c3da Improve various samples examples, #32 2016-06-22 22:25:14 +03:00
Emux
d2f61f9bfa Native libs: name with platform suffix, #14, #16 2016-06-21 19:19:56 +03:00
Emux
dc46238af6 Add how to contribute to readme 2016-06-20 13:28:36 +03:00
Emux
adb217734f Update readme 2016-06-20 13:15:41 +03:00
Emux
e403c45fa3 Revert to default gradle.properties 2016-06-20 13:09:20 +03:00
Emux
4383726e55 Add guidelines for repository contributors 2016-06-20 13:03:43 +03:00
Emux
6e6e423c74 LineRenderTest: show 4th example, fixes #30 2016-06-19 23:31:41 +03:00
Emux
29dfb241fb Render themes improvements / fixes, closes #27 2016-06-19 13:18:26 +03:00
Emux
ae1d4fd5d9 Render theme XSD improvements / fixes, closes #26 2016-06-19 13:14:36 +03:00
Emux
726f91556c Update themes for new xsd position, #25 2016-06-19 12:06:26 +03:00
Emux
278661e569 XML schema definitions repositioning, closes #25 2016-06-19 11:36:56 +03:00
Emux
fc4c9cf9bf Update readme 2016-06-18 20:42:03 +03:00
Emux
958dfb8166 Gradle: remove sources artifact 2016-06-18 20:10:02 +03:00
Emux
f3d4a8ef7d Fix vtm-tests 2016-06-18 19:53:56 +03:00
Emux
b726f5b6a8 Add license badge 2016-06-18 19:21:00 +03:00
Emux
8f8d0534b2 Add Travis badge, #24 2016-06-18 19:13:04 +03:00
Emux
58354155f6 Travis continuous integration, #24 2016-06-18 17:34:18 +03:00
Emux
891efed6e6 Remove external git submodule 'vtm-ext-libs', closes #23 2016-06-18 17:05:01 +03:00
Emux
34c0cee0ca Remove external git submodule 'appcompat', closes #22 2016-06-18 16:44:46 +03:00
Emux
7e891c452a vtm-tests: remove Maven plugin in build.gradle 2016-06-18 16:30:28 +03:00
Emux
16ae323731 Clear settings gradle 2016-06-18 16:23:14 +03:00
Emux
eb58dc9e67 vtm-playground: fix assets in build.gradle 2016-06-18 16:18:02 +03:00
Emux
bf370bceb7 SharedModel: make compatible with latest libGDX, improves #19, closes #13 2016-06-18 14:04:28 +03:00
Longri
d1fd03a52f fix libgdx compatibele to run tests from playground 2016-06-18 12:53:29 +03:00
Emux
f7f20f486e vtm-android-start: add proper application theme, fixes #18 2016-06-17 22:53:42 +03:00
Emux
8a34908f36 vtm-android-gdx example: add stencil buffer, fixes #17 2016-06-17 22:42:17 +03:00
Emux
cf4ff8046d libGDX Android native libraries, closes #16 2016-06-17 22:35:26 +03:00
Emux
3ea5af2477 VTM native libraries for Android and Desktop (Win, Mac, Linux), closes #14 2016-06-17 21:47:36 +03:00
Emux
e85ec48468 ViewController: moveTo respects Viewport limits, fixes #12 2016-06-17 15:14:07 +03:00
Emux
7a952cdaf9 Viewport: add movement limits public API, closes #11 2016-06-17 15:07:13 +03:00
Emux
c8f74e649e MapEventLayer: complete gestures public API, closes #10 2016-06-17 15:01:22 +03:00
Emux
c238916d89 MapPosition: update also zoomLevel in setByBoundingBox, fixes #9 2016-06-17 14:54:15 +03:00
Emux
a06973241c InputHandler: desktop keyboard shortcuts improvements / fixes, closes #8 2016-06-17 14:46:50 +03:00
Emux
b8d382a9f3 Android / AWT interfaces improvements, closes #7 2016-06-17 13:08:30 +03:00
Emux
35d8d2d57e ItemizedLayer: use getters for accessing the items, closes #6 2016-06-17 12:21:58 +03:00
Emux
92c10edb11 GLState: workaround for canvas resize artifacts on desktop, fixes #5 2016-06-17 11:57:54 +03:00
Emux
ec4fa0ed5f GridRenderer: change tile grid form to z/x/y, closes #4 2016-06-17 11:43:25 +03:00
Emux
7af0be9af7 BuildingLayer: translucent buildings option, closes #3 2016-06-17 11:22:18 +03:00
Emux
0a465abbfe GLUtils: workaround for texture memory leaks on desktop, fixes #2 2016-06-17 11:09:03 +03:00
Emux
e0f02323bb Update libGDX to 1.9.3 2016-06-16 16:40:45 +03:00
Emux
9022ec14ec Update Gradle and Android, build improvements. Closes #1 2016-06-16 13:04:00 +03:00
Hannes Janetzek
adc04ace7f Update build.gradle 2015-06-18 01:55:22 +02:00
Hannes Janetzek
e3fdaff470 fix build 2015-06-18 01:23:35 +02:00
Hannes Janetzek
7f5577ff24 android-example: add VectorLayerActivity 2015-06-18 00:50:54 +02:00
Hannes Janetzek
b174f65122 added drawing api
add GeomBuilder, needs Jts

drawing_api: squashed

drawing_api: use JtsDrawable baseclass

- add makeCircle for testing

drawing_api: cleanups

drawing_api: refactor

drawing_api: use SpatialIndex

drawing_api: optimization + cleanup

drawing_api: VectorLayer

- use VectorLayer for PathLayer

drawing_api: make style builder more consistent with theme api

drawing_api: wip
2015-06-18 00:17:01 +02:00
Hannes Janetzek
3402308ced Viewport: remove BoundingBox utility function 2015-06-18 00:17:01 +02:00
Hannes Janetzek
1ea26e576e Map: add getBoundingBox 2015-06-18 00:17:01 +02:00
Hannes Janetzek
231d596b69 Box: add utils and check min < max in constructor
sq: Box utils
add Box utils
fixup: Box
2015-06-18 00:17:01 +02:00
Hannes Janetzek
c0ece9dd7d spatialindex
add SpatialIndex clear()

docs: QuadTree

wip: SpatialIndex
2015-06-18 00:17:01 +02:00
Hannes Janetzek
c29c85db41 VectorTileLayer: rename hook function: render->process 2015-06-18 00:17:01 +02:00
Hannes Janetzek
0814a06d42 GeometryBuffer: add simple Constructor
- add makeCircle util
- return this on clear()
2015-06-18 00:17:00 +02:00
Hannes Janetzek
9642c8c5aa extract QueryResult from ITileDataSink 2015-06-18 00:17:00 +02:00
Hannes Janetzek
ff630fdcfa configure viewport extents
ref #156
close #45
2015-06-18 00:14:28 +02:00
Hannes Janetzek
d492358a94 sync viewport 2015-06-18 00:13:43 +02:00
Hannes Janetzek
6f85e24ed9 Viewport screen-pivot + extent option 2015-06-18 00:13:38 +02:00
Hannes Janetzek
da93f0ab72 GdxMapApp: reduce default fps 2015-06-18 00:09:27 +02:00
Hannes Janetzek
b1cfdfd454 android: remove MapActivity
- see vtm-android-start for an example use of MapView
- add MapPreferences

- update android-start
- android-example: use appcompat actionbar
2015-06-18 00:09:27 +02:00
Hannes Janetzek
0c5a7e7aa6 android: refactor MapView
- merge AndroidMap + GLView into Mapview
- let MapView directly extends GLSurfaceView
2015-06-18 00:09:27 +02:00
Hannes Janetzek
e1c1a20074 ViewController: clamp tilt in setPosition 2015-06-18 00:09:27 +02:00
Hannes Janetzek
dfc1aeb98f Animator: animation end event 2015-06-18 00:09:27 +02:00
Hannes Janetzek
8626aa2f53 api: no more sync'ed Viewport methods
- remove synchronized viewport methods: viewport MUST only be changed on main-thread
- when calling Map.setPosition() from another thread the position will be applied
  on the next main-loop iteration
2015-06-18 00:09:27 +02:00
Hannes Janetzek
381907526e fix: use same precision in vertex and fragment shaders
should fix #153
2015-06-18 00:07:20 +02:00
Hannes Janetzek
d8fb724d61 Update README.md
drop somewhat generic library name
2015-06-01 19:38:02 +02:00
Hannes Janetzek
de7c203926 use highp for all vertex shaders 2015-04-22 09:11:28 +02:00
Hannes Janetzek
c3cf288548 disable use of glBufferSubData for all adreno 3xx
- should fix the issue reported for galaxy 4 mini
2015-04-22 06:37:28 +02:00
Hannes Janetzek
1bb112e685 fix: line shader must have highp 2015-04-22 06:33:06 +02:00
Hannes Janetzek
00ceb9f359 fix overflow: use int offsets in TextureItem
should fix #144

- using quad-indices the offsets are not limited to max vertex ids
2015-03-19 14:16:56 +01:00
Hannes Janetzek
35c22e68dc update gradle, fix #142 jeo dependencies
- featuring: travis makin trouble
2015-03-19 14:16:35 +01:00
Hannes Janetzek
ecc26caec0 example: add MapScaleBar 2014-12-04 00:43:53 +01:00
Hannes Janetzek
d32b13fed4 fix: GLViewport.useScreenCoordinates
- fixes: MapScaleBar not being visible
2014-12-04 00:41:03 +01:00
Hannes Janetzek
711ca7f6d9 gradle: more fun 2014-11-20 01:01:27 +01:00
Hannes Janetzek
aaec15a66a gradle: fix vtm-android install + generate source jars 2014-11-20 00:27:48 +01:00
Hannes Janetzek
77f383913d fix: lost labels 2014-11-20 00:26:42 +01:00
Hannes Janetzek
e6d42a5a61 gradle: warn when submodules are missing
- sth better than 'Configuration with name 'default' not found'
2014-11-17 19:00:28 +01:00
Hannes Janetzek
ef391a3994 gradle: update android tooling 2014-11-17 18:51:22 +01:00
Hannes Janetzek
6c98e600bc example: add building layer to mapforge example 2014-11-12 06:40:13 +01:00
Hannes Janetzek
1d5fa4b9db mapsforge: remove duplicate points 2014-11-12 06:38:58 +01:00
Hannes Janetzek
a492aaa733 GeometryBuffer: add simplify() method 2014-11-12 06:38:29 +01:00
Hannes Janetzek
424126216c fix: Viewport.getDepth() for y == 0 2014-11-12 05:39:01 +01:00
Hannes Janetzek
c3ac8a412c PolygonBucket: dont test bbox visibility with overzoom > 2
- workaround: seems there can be some overflow in GLMatrix.prj2d()
2014-11-12 05:38:36 +01:00
Hannes Janetzek
3178787954 mapsforge: refactor MapDatabase
Conflicts:
	vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java
2014-11-12 05:38:36 +01:00
Hannes Janetzek
4fdae2a94c mapsforge: also need to clip lines to avoid overflow 2014-11-12 05:38:36 +01:00
Hannes Janetzek
68fe1f8b8a mapsforge: estimate whether a closed way is line or polygon
- refactor projection
- cleanups
2014-11-04 19:02:43 +01:00
Hannes Janetzek
ef34ba9766 fix: dont limit tile overzoom 2014-11-04 19:01:42 +01:00
Hannes Janetzek
bf2909585b gradle: update GWT 2014-11-03 01:36:24 +01:00
Hannes Janetzek
a85b435fb6 remove zoomMin/zoomMax from TileManager constructor 2014-11-03 01:36:03 +01:00
Hannes Janetzek
4c78f8652b fix: UrlTileSource.Builder was hiding zoom values from TileSource.Builder
- values set thorugh builder.minZoom()/maxZoom() were ignored

should fix: #120
2014-11-03 01:32:56 +01:00
Hannes Janetzek
f4ffac44d2 gradle: update to 2.1 and android targetSdk 21
- add android-appcompat subproject
2014-10-24 21:38:47 +02:00
Hannes Janetzek
0bc45dfd74 fix: polygon texture default fill 2014-10-13 23:36:34 +02:00
Hannes Janetzek
df909daccb theme: tweaks 2014-10-10 20:33:18 +02:00
Hannes Janetzek
fa62602826 Canvas: pass fill+stroke for drawing text 2014-10-10 19:58:14 +02:00
Hannes Janetzek
a8641ce535 playground: mapzen style map 2014-10-10 18:07:43 +02:00
Hannes Janetzek
bbe6067569 fix: show tiles at the highest scale
need to investigate the real cause..
2014-10-10 17:31:48 +02:00
Hannes Janetzek
f7b539f5c7 updated default theme:
- use textures for slight roughness of 'natural' features
- increase font size
2014-10-10 17:31:48 +02:00
Hannes Janetzek
78d438dfe6 pass fx option with S3DBLayer constructor 2014-10-10 17:31:48 +02:00
Hannes Janetzek
a098e669c3 ExtrusionLayer: animate when loaded 2014-10-10 17:31:48 +02:00
Hannes Janetzek
3f3dca30d7 add Color.isOpaque util 2014-10-10 17:31:47 +02:00
Hannes Janetzek
7b9301d479 PolygonBucket: enable fade and tinting of textured polygons 2014-10-10 17:31:47 +02:00
Hannes Janetzek
01a41d5f87 android-example: reenable cache.. 2014-10-10 17:31:47 +02:00
Hannes Janetzek
0b1fba58bb fix: AreaStyle blend 2014-10-10 17:31:47 +02:00
Hannes Janetzek
29f19b36ce wip: StyleBuilder 2014-10-10 17:31:47 +02:00
Hannes Janetzek
1ded32d303 fixup: area fade 2014-10-10 17:31:47 +02:00
Hannes Janetzek
ffe14e11d5 bring vtm-android-gdx back to life 2014-10-10 17:31:47 +02:00
Hannes Janetzek
846d90f9fe nicer gl api
- java class name should suffice as namespace
- also use import static gl instance seems to work now with Gwt
2014-10-10 03:23:37 +02:00
Hannes Janetzek
b2008aa086 use MAX_INDICES with bindQuadIndices() 2014-10-10 03:23:30 +02:00
Hannes Janetzek
b0ee833301 wip: Bucket API 2014-10-10 03:23:17 +02:00
Hannes Janetzek
9d86c6306d VertexData: float params add() versions 2014-10-10 03:23:06 +02:00
Hannes Janetzek
03f6f96988 add option for non-billboard MarkerSymbols 2014-10-10 03:22:34 +02:00
Hannes Janetzek
113ea64297 TileManager: allow setting zoomlevel-switch thresholds 2014-10-09 10:11:51 +02:00
Hannes Janetzek
7f2f798a94 fix: 'load parent by default'
- dont load parent when using zoom-level table
- only load parent when over-scale is less than 1.5
2014-10-09 10:01:45 +02:00
Hannes Janetzek
de04030257 android-example: enable building layer 2014-10-09 04:01:58 +02:00
Hannes Janetzek
7053cf8405 android: convert unsupported bitmap formats
- might fix png8 on older devices
2014-10-09 03:44:05 +02:00
Hannes Janetzek
ded178be6c TileManager: just drop index on re-init
- dont modify index of locked tiles..
- fixes one more bug from monkey test
2014-10-09 03:19:03 +02:00
Hannes Janetzek
d1daa92126 TileManager: load parent by default 2014-10-09 03:11:08 +02:00
Hannes Janetzek
5a4e422740 fix: TileGridLayer without text
- lines were not set..

fixes #111
2014-10-04 19:52:19 +02:00
Hannes Janetzek
9b5d31bcf3 useless sync 2014-10-03 07:30:01 +02:00
Hannes Janetzek
de24860ad4 dead is dead 2014-10-03 07:30:01 +02:00
Hannes Janetzek
1a4ec3f7ad fix: one more missing sync 2014-10-03 07:29:51 +02:00
Hannes Janetzek
8f6f1bf238 android monkey tests 2014-10-03 05:19:13 +02:00
Hannes Janetzek
82525ec769 limit OSciMap min zoom-level 2014-10-03 05:19:13 +02:00
Hannes Janetzek
26cb2e6603 simplify PausableThread
- make pausing work properly
2014-10-03 05:19:13 +02:00
Hannes Janetzek
33c645e888 close UrlTile conn on cancel
- synchronize connect() and close()
2014-10-03 05:19:12 +02:00
Hannes Janetzek
71715dccd9 fixing MapTile state logic 2014-10-03 05:19:12 +02:00
Hannes Janetzek
5f9a9cc909 TileLoader/TileDataSource: add cancel() method
- used to force closing sockets when changing theme or tilesource
2014-10-03 05:19:12 +02:00
Hannes Janetzek
41085f915e LwHttp: increase timeouts
- wip: HttpEngine docs
2014-10-01 10:00:10 +02:00
Hannes Janetzek
5109eda6da fix: TileManager reload failed tiles
- properly clear previous TileSet
- CANCEL state tiles will be cleared when they return from tile-worker
2014-10-01 09:59:55 +02:00
Hannes Janetzek
e20a342f81 fix: PolygonBucket screen intersection test
- actually make a box
2014-10-01 09:59:40 +02:00
Hannes Janetzek
85377b42c4 fix: use fadeTime from original tile 2014-09-20 06:16:27 +02:00
Hannes Janetzek
cb3296ebdd playground tests 2014-09-20 02:23:32 +02:00
Hannes Janetzek
a8400dd48a TileManager:
- set zoomMin/Max for current TileSource
- add zoom-level switch threshold
- add TileManager.getTile()
- remove releaseTiles()
- extract JobCompletedEvent from anonymous class
2014-09-20 02:23:32 +02:00
Hannes Janetzek
3fa121d31a VectorTileLoader: dont add faded out polygon layers 2014-09-20 02:23:31 +02:00
Hannes Janetzek
8303a611ea TileRenderer: get correct fade-time for proxies 2014-09-20 02:23:31 +02:00
Hannes Janetzek
2aa75ddbf5 MeshBucket: add special add() for convex polygon 2014-09-20 02:23:31 +02:00
Hannes Janetzek
b5214ef35a MeshBucket: use blend/fade color 2014-09-20 02:23:31 +02:00
Hannes Janetzek
e32f45b585 S3DB/Buildings:
- allow multiple building extrusion buckets per tile
  (differently colored buildings depending on tags)
- fixed ExtrusionBucket index offsets
- rename more layer -> bucket
2014-09-20 02:23:31 +02:00
Hannes Janetzek
84c094000b OffscreenRenderer: use depthTexture for SSAO modes 2014-09-20 02:23:31 +02:00
Hannes Janetzek
3577e648d1 make LayerRenderer methods public to enable composition 2014-09-20 02:23:31 +02:00
Hannes Janetzek
c632b865b0 PolygonBucket: reenable per bucket visibility test 2014-09-20 02:23:31 +02:00
Hannes Janetzek
33c48b3d53 BucketRenderer: add default implementation for update()
- handy for simple (debug) layers
2014-09-20 02:23:30 +02:00
Hannes Janetzek
2317975c63 RenderBuckets: add clearBuckets 2014-09-20 02:23:30 +02:00
Hannes Janetzek
b031f98fff fixup: layer -> bucket variable names 2014-09-20 02:23:30 +02:00
Hannes Janetzek
b057c56466 fix: BucketRenderer unified base/tex buckets 2014-09-20 02:23:30 +02:00
Hannes Janetzek
a60f326e16 RenderBuckets: optimization
- start search from current when searched level is greater than current
2014-09-20 02:23:30 +02:00
Hannes Janetzek
66653df3dc fix: dont let TextureBuckets interfere with other bucket 'levels'
- make TextureLayer.textures protected
2014-09-20 02:23:30 +02:00
Hannes Janetzek
3a30476f7e GLState: track buffer bindings
- reset buffer bindings at frame start
2014-09-20 02:23:30 +02:00
Hannes Janetzek
3f8b028d60 RenderBuckets: unify baseBuckets and textureBuckets
... finally
2014-09-20 02:23:30 +02:00
Hannes Janetzek
f6d85ce8bd refactor: rename render 'layers' to 'buckets'
- the name I was looking for for a long time :)
  also less confusion with map layers
- move renderer.elements -> renderer.bucket
- rename RenderBuckets functions
- rename BucketRenderer.layers -> buckets
2014-09-20 01:31:07 +02:00
Hannes Janetzek
b4a567884f unify Indexed- and RenderElement
- remove IndexedRenderElement

- ExtrusionLayer: clear temporary data in prepare()
  - ie. dont wait to release shared Vertexs until compile()
- ExtrusionLayer: make naming consistent with ElementLayers
  - in particular use of 'numIndices', 'numVertices'
2014-09-20 01:31:06 +02:00
Hannes Janetzek
8741357c9a GL20: fix parameter name indices -> offset 2014-09-20 01:31:06 +02:00
Hannes Janetzek
20afbfe230 use new Tessellator for Mesh- and ExtrusionLayer 2014-09-20 01:31:06 +02:00
Hannes Janetzek
7db70f239f jni: new Tesselator 2014-09-20 01:31:06 +02:00
Hannes Janetzek
59ab24da90 jni: add GLMatrix proj2d/3d 2014-09-20 01:07:03 +02:00
Hannes Janetzek
c34bc3306c RenderElement: docs 2014-09-20 01:07:03 +02:00
Hannes Janetzek
31a45b0468 add ElementLayer/RenderElement prepare()
- used to prepare for compile() when all layer data is added
2014-09-20 01:07:03 +02:00
Hannes Janetzek
990e04477c GeometryBuffer: switch to int[] indices 2014-09-20 01:07:03 +02:00
Hannes Janetzek
7be8155939 GeometryBuffer:
- add getPoint(i, point)
- addPoint(PointF)
- getPointX/Y

GeomBuffer: api
2014-09-20 01:07:03 +02:00
Hannes Janetzek
d6cf845fef PolygonLayer optimizations:
- check of polygon elements are visible
- use AreaStyle.hasAlpha() to enable blending
- GLState.testDepth()
- LineClipper: add outcode(x,y)
2014-09-20 01:07:03 +02:00
Hannes Janetzek
01830707dc MapRenderer: refactor native buffer utils 2014-09-20 01:07:02 +02:00
Hannes Janetzek
a835d44187 VertexData: docs
- remove superfluous static get()
2014-09-20 01:07:02 +02:00
Hannes Janetzek
123b0aa098 renderer: cleanups 2014-09-20 01:07:02 +02:00
Hannes Janetzek
e645696adb MapRenderer: increase shared quad vertices 2014-09-20 01:07:02 +02:00
Hannes Janetzek
e830252c85 wip: use HairLine for PolygonLayer outlines 2014-09-20 01:07:02 +02:00
Hannes Janetzek
7bf2544a83 PolygonLayer: cleanups 2014-09-20 01:07:02 +02:00
Hannes Janetzek
b69923e05d PolygonLayer: separate drawing of stencil clip region 2014-09-20 01:07:02 +02:00
Hannes Janetzek
3cd2f9ea47 add HairlineLayer 2014-09-20 01:07:02 +02:00
Hannes Janetzek
f390a903dc use common vertexItems field in ExtrusionLayer 2014-09-20 01:07:02 +02:00
Hannes Janetzek
033a0d9c9d let MeshLayer extend IndexedRenderElement 2014-09-20 01:07:02 +02:00
Hannes Janetzek
8c13a82df7 add IndexedRenderElement 2014-09-20 01:07:02 +02:00
Hannes Janetzek
59dd9425c8 refactor: move compileVertexItems() to RenderElement
- rename addPoolItems -> compileVertexItems
2014-09-20 01:07:01 +02:00
Hannes Janetzek
9f8a383ce6 gradle: update jeo repo url 2014-09-20 01:03:40 +02:00
Hannes Janetzek
530e2b7cb4 gradle: switch to my jeo repo for now 2014-09-16 13:14:46 +02:00
Hannes Janetzek
c311004bd8 use global sync for all tiles managed in TileSets
TODO should be removed together TileRenderer.getVisibleTiles()
2014-09-16 11:59:00 +02:00
Hannes Janetzek
0c245f4f6d refactor: MapTile et al
- cleanup proxy draw logic in VectorTileRenderer
- fixes upload of child proxies in TileRenderer
2014-09-16 11:59:00 +02:00
Hannes Janetzek
7779e30635 TileIndex: find the tile at z=0...
- should fix #91
2014-09-16 00:57:44 +02:00
Hannes Janetzek
707769f124 TextureItem: allow cloning uninitialized textures
- TextureRegion: use texture handle, not atlas.texture
- update SymbolLayer

- TextureAtlas: remove depth
2014-09-11 21:00:27 +02:00
Hannes Janetzek
5a0f10559d increase label Texture size 2014-09-11 21:00:27 +02:00
Hannes Janetzek
af3ee3a742 use text texture size for buffered gdx/awt image loading 2014-09-11 21:00:27 +02:00
Hannes Janetzek
52813ea29f sed 's/m\(in\|ax\)\(X\|Y\)/\L\2m\1/g' 2014-09-11 21:00:26 +02:00
Hannes Janetzek
c48c620963 BoxTree:
- return false from search() when search callback returned false
- fix removal: unlink next item
- add clearToPool()
2014-09-11 21:00:26 +02:00
Hannes Janetzek
64068730db add missing LineBuilder.fixed(bool) 2014-09-11 21:00:26 +02:00
Hannes Janetzek
95c9f47e63 refactor: hide backend Adapter handles
- static methods for backend adapters
2014-09-11 21:00:26 +02:00
Hannes Janetzek
84968d201d android: use confirmed tap gesture
- otherwise tap conflicts with double tap zoom..
2014-09-11 21:00:26 +02:00
Hannes Janetzek
6d690ff5af android: enable GLSurfaceView debug flags with GLAdapter.debug 2014-09-11 21:00:26 +02:00
Hannes Janetzek
a97b3283a0 add TileSource.Builders 2014-09-11 21:00:26 +02:00
Hannes Janetzek
67336e0c93 implement okhttp response caching
based on patch from: Baldur Gudbjornsson <baldur.gudbjornsson@gmail.com>
2014-09-11 21:00:26 +02:00
Hannes Janetzek
691a18873d HttpEngine: throw exception instead of null return in conn.read()
- convert OkHttps FileNotFound to some more useful exception
2014-09-11 21:00:25 +02:00
Hannes Janetzek
47b2a55b11 gdx: add keys for scale and tilt 2014-09-04 02:32:36 +02:00
Hannes Janetzek
243af371be switch to libgdx-jglfw desktop backend 2014-09-04 02:32:36 +02:00
Hannes Janetzek
3c281e8824 use libgdx 1.2 2014-09-04 02:32:36 +02:00
Hannes Janetzek
a849b30efe forward MapActivity stop/resume to MapView 2014-09-04 02:28:15 +02:00
Hannes Janetzek
d42302a150 update webgl map link 2014-09-04 00:07:07 +02:00
Hannes Janetzek
3aac9272ee update readme 2014-09-04 00:02:05 +02:00
Hannes Janetzek
a8ed9b80ef document Map events 2014-09-03 23:49:23 +02:00
Hannes Janetzek
2e5ff2e4a4 TileCache: close db cursor when result is empty 2014-09-03 22:39:15 +02:00
Hannes Janetzek
f7a98017b1 TileCache: remove unused size field 2014-09-03 22:39:15 +02:00
Hannes Janetzek
bb5cf608a6 cannot test OkHttp close atm 2014-08-13 23:10:14 +02:00
Hannes Janetzek
c2a5ad4104 avoid network on main-thread exception with OkHttp 2014-08-13 23:10:14 +02:00
Hannes Janetzek
2a6f6c28a0 fix travis build 2014-08-13 23:10:14 +02:00
Hannes Janetzek
4f5125cf22 update README 2014-08-13 23:10:13 +02:00
Hannes Janetzek
a81e3adae1 gradle: use android build-tools 20.0 2014-08-13 23:10:13 +02:00
Hannes Janetzek
490f0c35b1 remove vtm-android-app submodule 2014-08-13 20:37:06 +02:00
Hannes Janetzek
3d1cc6fe36 disable glBufferSubData for all Adreno 330/320
- use more specific test to work around buggy driver
2014-06-24 21:00:30 +02:00
Hannes Janetzek
51b2773ef2 get correct fade-time for proxy tiles 2014-06-24 20:59:46 +02:00
Hannes Janetzek
2995de938e update and docs for TileLoaderHooks
- add complete() method to TileLoaderHooks
- use Inlist instead of array for hooks
2014-06-19 18:31:55 +02:00
Hannes Janetzek
978b5ead44 handle LongPress in ItemizedLayer 2014-06-19 18:31:55 +02:00
Hannes Janetzek
6c830575c9 fix: LineClipper for multilinestrings 2014-06-19 18:31:55 +02:00
Hannes Janetzek
27b9294a36 fix: tile fade time
- did not check grandparent
2014-06-19 18:31:54 +02:00
Hannes Janetzek
a2abbe5197 mo' fling 2014-06-10 22:38:52 +02:00
Hannes Janetzek
3f49361e4a refactor: add api for common VertexItem use
- rename VertexItem -> VertexData
2014-06-10 22:38:52 +02:00
Hannes Janetzek
ad0eff3fac android: ignore NewApi error 2014-06-10 22:38:52 +02:00
Hannes Janetzek
7c995534eb add Tag constructor for intern() keys 2014-06-10 22:38:52 +02:00
Hannes Janetzek
2c6a85ee6d add GeoPoint.distance()
- return double in distanceTo()
2014-06-10 22:38:51 +02:00
Hannes Janetzek
9b719d857e add RTree 2014-06-10 22:16:09 +02:00
Hannes Janetzek
e961eba9c0 rename old QuadTree -> TileIndex 2014-06-10 22:16:09 +02:00
Hannes Janetzek
b460b4ebaf add QuadTree implementing SpatialIndex
- add SpatialIndex interface
2014-06-10 22:16:09 +02:00
Hannes Janetzek
4e94a8f269 inner class should be static 2014-06-10 22:16:09 +02:00
Hannes Janetzek
6eeb21623b cleanup comments 2014-06-10 22:16:09 +02:00
Hannes Janetzek
225613ec28 cleanup: canvas Paint 2014-06-10 22:16:08 +02:00
Hannes Janetzek
7cd5084777 fix: reset TileSet serial 2014-06-10 22:16:08 +02:00
Hannes Janetzek
5e1705e621 gwt: implement GLMatrix.proj2D 2014-06-10 22:16:08 +02:00
Hannes Janetzek
ee5e6b511e gwt: throw on missing GL context 2014-06-10 22:16:08 +02:00
Hannes Janetzek
480d639def GLMatrix: add batch projection 2014-06-10 22:16:08 +02:00
Hannes Janetzek
9d078142aa add LineLayer setExtents to not add caps outside visible region 2014-06-10 22:16:08 +02:00
Hannes Janetzek
bf8cc329cf Box:
- add Box.overlap(Box) and copy constructor
- add Box.inside(box)
2014-06-10 22:16:08 +02:00
Hannes Janetzek
dc0529c59e implement KeyMap.remove()
- tests
- cleanups
2014-06-10 22:16:08 +02:00
Hannes Janetzek
a65b35f8de tweak s3db colors 2014-06-10 22:16:08 +02:00
Hannes Janetzek
97857cf4e4 theme: more alpha for buildings 2014-06-10 22:16:08 +02:00
Hannes Janetzek
dc0089dc07 theme: increase osmarender way label size 2014-06-10 22:16:08 +02:00
Hannes Janetzek
9c393d25dc theming: allow extending text styles 2014-06-10 22:16:07 +02:00
Hannes Janetzek
7667b08b50 rename theme property base-text-size -> base-text-scale 2014-06-10 22:16:07 +02:00
Hannes Janetzek
fb628f4e25 Inlist:
- add Inlist.List size()
- make Inlist work items indirectly extending Inlist
- check Inlist.push() argument to not push lists
2014-06-10 22:16:07 +02:00
Hannes Janetzek
a9d3b0a302 fix iOS build 2014-06-10 22:16:07 +02:00
Hannes Janetzek
5d939cdbfd gradle: update 2014-06-10 22:16:07 +02:00
Hannes Janetzek
b593179376 ignore++ 2014-06-10 22:16:07 +02:00
Hannes Janetzek
19701b7563 fix: LwHttp - retry when address lookup failed
- use 5sec read timeout
- use tcp_nodelay
2014-06-10 22:16:07 +02:00
Hannes Janetzek
a26aa9de15 sync on ExtrusionLayer.vertexPool instead of each Vertex 2014-06-02 12:48:23 +02:00
Hannes Janetzek
037c25153b theme: increase buildings alpha 2014-05-25 02:27:02 +02:00
Hannes Janetzek
b9ebf1e57b refactor ExtrusionRenderer
+ cleanups
2014-05-25 02:26:36 +02:00
Hannes Janetzek
5af831abb5 nicer building fade 2014-05-25 00:53:31 +02:00
Hannes Janetzek
6bc3818318 update app 2014-05-25 00:53:31 +02:00
Hannes Janetzek
c0369236d2 start: add tilegridlayer to menu 2014-05-24 23:07:47 +02:00
Hannes Janetzek
4ddf9dcf39 refactor ExtrusionRenderer
- extract tile specific parts to BuildingRenderer
- sort tiles by distance for compilation
- slow down fade out animation
2014-05-24 23:06:50 +02:00
Hannes Janetzek
7466b6206f extract ExtrusionLayers from ElementLayers 2014-05-24 22:02:16 +02:00
Hannes Janetzek
774dd43a18 add min/max tile zoom to ExtrusionRenderer 2014-05-24 19:48:55 +02:00
Hannes Janetzek
1a22a39991 fix: Layer sort order for event processing 2014-05-24 14:27:55 +02:00
Hannes Janetzek
5c388e7fcb fix: re-enable building animation 2014-05-24 14:27:55 +02:00
Hannes Janetzek
d96e9c4070 jni project settings 2014-05-24 14:27:55 +02:00
Hannes Janetzek
10e186780c jni stuff 2014-05-16 17:55:45 +02:00
Hannes Janetzek
6d9b62af72 implement Iterator in Inlist.List
+ reverse(), append()
2014-05-16 17:55:45 +02:00
Hannes Janetzek
dfe6ca99ce refactor TileClipper:
- move clipLine() to LineClipper
2014-05-16 17:55:45 +02:00
Hannes Janetzek
f62ea65f25 rename vars: vertices counts are actually indices 2014-05-16 17:55:45 +02:00
Hannes Janetzek
89edbf90f2 remove GlAdapter.VBO_TEXTURE_LAYERS hack 2014-05-16 17:53:41 +02:00
Hannes Janetzek
9c1ae887ea samsung/adreno quirk: dont use glBufferSubData() 2014-05-16 12:03:46 +02:00
Hannes Janetzek
607b6d6266 Merge branch 'no-vbo-texture-layer' 2014-05-12 14:48:30 +02:00
Hannes Janetzek
ee3ffa8cec dont use vbo texture-layers for samsung devices with kitkat 2014-05-12 14:48:30 +02:00
Hannes Janetzek
f207a6eb4a add workaround for adreno driver issue 2014-05-12 14:48:30 +02:00
Hannes Janetzek
1ca175c598 add MapEventLayer.fixOnCenter()
- when enabled position is kept for zoom/rotation gesture
2014-05-12 14:48:29 +02:00
Hannes Janetzek
fbfe17743e update android build-tools 2014-05-12 14:48:27 +02:00
Hannes Janetzek
62255e7583 cleanup: MapEventLayer 2014-05-06 14:00:06 +02:00
Hannes Janetzek
35cda5c7d1 fix test for min-drag distance
- value just chosen to be large enough
2014-05-06 00:50:14 +02:00
Hannes Janetzek
0d8454a079 check minimal move before starting double-tap-zoom-drag 2014-05-06 00:44:28 +02:00
Hannes Janetzek
4e454ef84c s3db: more material colors 2014-05-05 00:05:06 +02:00
Hannes Janetzek
a8662d4dce s3db: disable postprocess mode
- seems old mali having issues with dependent texture reads..
- add bypass shader for testing
2014-05-05 00:05:06 +02:00
Hannes Janetzek
e7a015a1d7 no need to pre-calc BoundingBox hashcode 2014-05-05 00:05:05 +02:00
Hannes Janetzek
b75a3712d5 dbg: VectorTileLayer 2014-05-05 00:05:05 +02:00
Hannes Janetzek
b509e3c8d1 use inverted MeshLayer debug colors 2014-05-05 00:05:05 +02:00
Hannes Janetzek
37ffdadf1a API: allow changing number of TileLoader threads 2014-05-05 00:05:05 +02:00
Hannes Janetzek
9bd327cbe6 API: remove setBackgroundMap, add setBaseMap(TileLayer) 2014-05-05 00:05:05 +02:00
Hannes Janetzek
c9bd08dcdf API: make Rule members public 2014-05-05 00:05:05 +02:00
Hannes Janetzek
64383a8406 add TaskQueue interface to Map
- change AsyncTask to be able to post on main-thread
- rename Task.run() -> go()
2014-05-05 00:05:05 +02:00
Hannes Janetzek
c161ea9cca vtm-android: disable check-gl-error flags 2014-05-04 22:01:32 +02:00
Hannes Janetzek
fcc29eaa41 add MapPosition accessors 2014-05-04 22:01:32 +02:00
Hannes Janetzek
b0f0455ccf submit update task on PathLayer.setGeom() 2014-05-04 22:01:32 +02:00
Hannes Janetzek
24c8b4c16f fixme: re-init TileSet when count is zero.. 2014-05-04 22:01:32 +02:00
Hannes Janetzek
5cac7894c3 close TileSource on VectorLayer detach 2014-05-04 22:01:32 +02:00
Hannes Janetzek
f304462a7c cleanup: LineTexLayer 2014-05-04 22:01:32 +02:00
Hannes Janetzek
4ab053df3b cleanup: OBB2D 2014-05-04 22:01:32 +02:00
Hannes Janetzek
803fbcac47 cleanup: SimplifyVW 2014-05-04 22:01:31 +02:00
Hannes Janetzek
0139452787 fix: SimplifyDP handling of 'multi' geometries 2014-05-04 22:01:31 +02:00
Hannes Janetzek
d6b95c936a refactor TileClipper
- fix: TileClipper check len<6 before len==0
2014-05-04 22:01:31 +02:00
Hannes Janetzek
d263089c06 reset MapElement layer to default 2014-05-04 21:27:12 +02:00
Hannes Janetzek
04ea503184 Merge branch 'double-tap-to-zoom' 2014-05-04 20:41:44 +02:00
Hannes Janetzek
db37897740 fix double-tap zoom tests 2014-05-04 20:09:16 +02:00
Hannes Janetzek
24f699993b make double tap zoom to screen location 2014-05-04 20:09:16 +02:00
Hannes Janetzek
d5827de12e invert tilt gesture 2014-05-04 20:09:15 +02:00
Chuck Greb
469ca9093f Adds double tap to zoom 2014-05-04 20:09:15 +02:00
Chuck Greb
804c91c701 Inverts behavior of double touch drag gesture
Per Android guidelines, double touch drag up should decrease content scale and double touch drag down should increase content scale.

This is also the behavior in the official Google Maps Android application.

http://developer.android.com/design/patterns/gestures.html
2014-05-04 20:09:15 +02:00
Hannes Janetzek
559a5d0508 update android support library
no idea why gradle cannot find build-tools 19.0.3..
2014-05-04 20:08:29 +02:00
Hannes Janetzek
c00000edc8 cleanup: unused file 2014-05-04 20:08:19 +02:00
Hannes Janetzek
f132edf459 disable ios build 2014-05-04 20:08:09 +02:00
Hannes Janetzek
15023432cc GLState: keep track of clear color 2014-04-03 22:53:37 +02:00
Hannes Janetzek
2833d0f5c2 PathLayer: submit update task directly
- revert update listener
2014-04-03 22:42:31 +02:00
Hannes Janetzek
d26bd52689 jeo api changes 2014-04-03 22:16:12 +02:00
Hannes Janetzek
d42b8d6af2 LwHttp: handle gzip encoding 2014-04-03 21:56:28 +02:00
Hannes Janetzek
ca69f329cc Merge branch 'pluggable-network-layer' 2014-04-03 16:33:34 +02:00
Hannes Janetzek
e84afa32f7 use debug log in IOUtils.closeQuietly 2014-04-03 16:32:07 +02:00
Hannes Janetzek
cb5de5135f cleanup: LwHttp 2014-04-03 16:32:06 +02:00
Hannes Janetzek
0b82df4c21 add http request options 2014-04-03 16:32:06 +02:00
Hannes Janetzek
85a4bbe125 api: UrlTileSource:
- add UrlTileSource.getTileUrl(Tile) to create complete url string
- add TileUrlFormatter interface to override default formatter
- remove unused return from sendRequest()
2014-04-03 16:12:38 +02:00
Hannes Janetzek
6b7ccd68c9 add missing headers 2014-04-03 16:12:38 +02:00
Hannes Janetzek
15cf4810cf LwHttp: prepare tilePath as byte[] 2014-04-03 16:12:38 +02:00
Hannes Janetzek
98e30a468f add getter for split tilePath 2014-04-03 16:12:38 +02:00
Hannes Janetzek
5ad68ff2c7 gwt: update UrlTileSource 2014-04-03 16:12:38 +02:00
Hannes Janetzek
5c277f4d54 fix: HttpEngine tests 2014-04-03 16:12:17 +02:00
Hannes Janetzek
3f9847f617 gradle: make okhttp optional 2014-04-03 04:38:33 +02:00
Hannes Janetzek
9c4e04c4d6 api: UrlTileSource
- use replacement string for tilePath
- move 'low-level' formatTilePath to LwHttp
- implement LwHttpFactory
2014-04-03 04:15:46 +02:00
Chuck Greb
d709d7f39a Fixes HttpEngine tests 2014-04-03 04:15:46 +02:00
Hannes Janetzek
2bf5313c2b move tests to separate project 2014-04-03 04:15:46 +02:00
Hannes Janetzek
9bca50dfed some modification suggested by pmd:
- move fields before method
- chain StringBuilder appends
2014-04-02 22:30:13 +02:00
Hannes Janetzek
f75702a575 create HttpEngine instances for each loader thread 2014-04-02 22:30:13 +02:00
Chuck Greb
f3035d827b Tests OkHttp integration 2014-04-02 22:30:13 +02:00
Chuck Greb
af7d70cfd8 Extracts configurable networking layer.
* Extracts HttpEngine interface.
* Uses LwHttp as default networking client.
* Implements alternate networking client using OkHttp.
2014-04-02 22:30:13 +02:00
Hannes Janetzek
e13bc7822f add some pmd rules 2014-04-02 22:30:12 +02:00
Hannes Janetzek
e1feb4e5b7 docs: ITileDataSink 2014-04-02 22:30:12 +02:00
Hannes Janetzek
3297998a42 move unused SpriteManager to playground 2014-04-02 04:43:42 +02:00
Hannes Janetzek
6a71e53f93 findbugs: fix loop 2014-04-02 04:43:42 +02:00
Hannes Janetzek
2a2ff723ee libs++ 2014-04-02 04:14:08 +02:00
Hannes Janetzek
f614244043 app++ 2014-04-02 04:07:43 +02:00
hanchao
bf7db38ef8 update android gradle plug_in to 0.9.+ for android studio 0.5.3 2014-04-02 03:15:41 +02:00
Hannes Janetzek
05910f23fb fix: update PathLayer onMapEvent when points changed 2014-04-02 02:24:17 +02:00
Hannes Janetzek
267108d20b gradle: fix vtm-web-js 2014-04-01 16:55:47 +02:00
Hannes Janetzek
ef36c8a3d8 Merge branch 'texture_pool_dispose' 2014-04-01 04:03:10 +02:00
Hannes Janetzek
82f2070e99 increase java PermSize in gradle.properties 2014-04-01 04:03:10 +02:00
Hannes Janetzek
a37b503628 use one TexturePool per BitmapTileLayer
- dispose textures onDetach()
2014-04-01 04:03:10 +02:00
Hannes Janetzek
55714ae01e update README 2014-04-01 04:03:10 +02:00
Hannes Janetzek
b45e38ef4d dispose textures at end of each frame 2014-04-01 04:03:10 +02:00
Hannes Janetzek
e80981e0c5 add SyncPool.clear() 2014-04-01 04:03:10 +02:00
Hannes Janetzek
01f248632f example: cleanup 2014-04-01 04:03:09 +02:00
Hannes Janetzek
5131d2efd7 Merge branch 'rule_refactor' 2014-04-01 04:03:09 +02:00
Hannes Janetzek
4eedb7ff30 update file header 2014-03-31 15:31:01 +02:00
Hannes Janetzek
1f1675f188 no more Rule stack optimization
- the modified xml schema allows write proper rules :)
2014-03-31 15:30:53 +02:00
Hannes Janetzek
dc70104676 move ThemeBuilder 2014-03-31 15:23:08 +02:00
Hannes Janetzek
120797fe96 add RuleBuilder setters for Rule- and Style-Builders 2014-03-31 15:16:24 +02:00
Hannes Janetzek
4f254bde75 add StyleBuilder interface 2014-03-31 15:16:24 +02:00
Hannes Janetzek
f5645cf292 move RuleBuilder xml part to XmlThemeBuilder 2014-03-31 15:16:24 +02:00
Hannes Janetzek
191e94c670 merge Positive/NegativeRule into Rule 2014-03-31 15:16:24 +02:00
Hannes Janetzek
211ba90108 rendertheme: merge AttributeMatcher into Rule
- allow to match actual key-value-pairs.
  previously value matcher just checked *any* value not
  the one that matched key. See PositiveRuleKV/MultiKV
2014-03-31 15:16:24 +02:00
Hannes Janetzek
a3251a4aa6 set RenderStyle itself as current 2014-03-31 15:16:22 +02:00
Hannes Janetzek
9f8bc93d91 gradle: add libgdx repo 2014-03-30 20:28:02 +02:00
Hannes Janetzek
f5752b048e travis: increase java heap 2014-03-30 20:28:02 +02:00
Hannes Janetzek
92d9bba0e1 Merge branch 'geojson' 2014-03-30 20:27:47 +02:00
Hannes Janetzek
e8aa7d55bd web-js: testing geojson 2014-03-30 20:26:10 +02:00
Hannes Janetzek
de27227ed7 gwt: geojson tilesource 2014-03-30 20:24:53 +02:00
Hannes Janetzek
5fd05d5d01 theme: river fixed width 2014-03-30 04:28:59 +02:00
Hannes Janetzek
fb46f73eb0 example: add geojson tiles 2014-03-30 04:28:59 +02:00
Hannes Janetzek
b39f9ca003 add geojson example tile sources
- add OsmLanduseJsonTileSource
- add layers for buildings and water areas
2014-03-30 04:28:59 +02:00
Hannes Janetzek
aee1b22c89 add geoson tile source
- based on a patch sent by: Yang (apachemaven)
- use jackson-core for stream parsing
- rewrite tags, this way one can use the same the for different data
2014-03-30 03:49:54 +02:00
Hannes Janetzek
2f5a71df6b add poi tree 2014-03-29 19:19:30 +01:00
Hannes Janetzek
f18642eff9 Merge branch 'playground' 2014-03-29 19:08:21 +01:00
Hannes Janetzek
fe728318b1 gradle 2014-03-29 19:04:31 +01:00
Hannes Janetzek
21d32bacb7 gdx poi3d layer 2014-03-29 19:03:17 +01:00
Hannes Janetzek
44974d90a7 jeo example 2014-03-29 19:03:17 +01:00
Hannes Janetzek
b286e8f6eb experiments, testcode 2014-03-29 19:03:17 +01:00
Hannes Janetzek
aac57ee0d5 re-enable GdxMap.keyDown() handler 2014-03-29 18:56:34 +01:00
Hannes Janetzek
6f7ce36ec4 remove vtm-jeo-desktop 2014-03-29 18:55:56 +01:00
Hannes Janetzek
04391815e4 move vtm-jeo-android to vtm-android-example 2014-03-29 14:53:19 +01:00
Hannes Janetzek
5f14a87abd travis 2014-03-28 17:04:40 +01:00
Hannes Janetzek
43a62e90bb jeo api changes 2014-03-28 17:04:40 +01:00
Hannes Janetzek
60cad376e0 Merge branch 'fx' 2014-03-27 04:00:16 +01:00
Hannes Janetzek
a6df240b8b use GLShader for OffscreenRenderer 2014-03-27 03:59:32 +01:00
Hannes Janetzek
a7897427a3 wrap Offscreen renderer in S3DB/BuildingLayer 2014-03-27 03:59:29 +01:00
Hannes Janetzek
d90a0e9475 fx: combined ssao/fxaa shader
- rename and update shaders
2014-03-27 03:52:23 +01:00
Hannes Janetzek
cc95c485ce fx: add fxaa post-process shader 2014-03-27 03:52:22 +01:00
Hannes Janetzek
3071cdd0ac fx: add OffscreenRenderer 2014-03-27 03:52:22 +01:00
Hannes Janetzek
acdfefa55f use GLShader.init(gl) 2014-03-27 03:51:57 +01:00
Hannes Janetzek
41c92f0a38 example: use stored map position 2014-03-27 03:51:57 +01:00
Hannes Janetzek
ce38b484f6 s3db: use css colors 2014-03-27 03:51:57 +01:00
Hannes Janetzek
c57b388472 add ColorsCSS 2014-03-27 03:14:05 +01:00
Hannes Janetzek
647a8fc2a3 limit gl upload to one building tile per frame 2014-03-27 03:14:05 +01:00
Hannes Janetzek
e7aeb92b12 limit number of tile data uploads per frame 2014-03-27 03:14:05 +01:00
Hannes Janetzek
d6ec9a1c6d use simplelogger.properties 2014-03-27 03:14:05 +01:00
Hannes Janetzek
aa4a1de6f7 s3db: use non-exception version of parseColor 2014-03-27 03:14:05 +01:00
Hannes Janetzek
fd941858dd gwt: LoadDelayTask, keep refs with task 2014-03-27 03:14:05 +01:00
Hannes Janetzek
72b2349e11 gwt: add MapUrl for url hash parsing and updates 2014-03-27 03:14:05 +01:00
Hannes Janetzek
150c7d911c gwt: s3db layer 2014-03-27 03:14:05 +01:00
Hannes Janetzek
a98bcdd999 libs++ 2014-03-27 03:14:04 +01:00
Hannes Janetzek
b85713b437 cleanup: MapView 2014-03-27 03:14:04 +01:00
Hannes Janetzek
78f3d82d2f android: move GL classes to gl package 2014-03-27 03:14:04 +01:00
Hannes Janetzek
e1943e2808 android: extract GestureHandler 2014-03-27 03:14:04 +01:00
Hannes Janetzek
c11a0d698b android: rename MapView.getMap() 2014-03-27 03:14:04 +01:00
Hannes Janetzek
af823f74c7 fix: vtm-android-gdx build 2014-03-27 03:14:04 +01:00
Hannes Janetzek
fed257a1f7 gdx: add MotionHandler, use common MapEventLayer 2014-03-27 03:14:04 +01:00
Hannes Janetzek
26704d3ce5 cleanup: MotionEvent 2014-03-27 03:14:04 +01:00
Hannes Janetzek
45db59650a fix: MapEventLayer velocity when timediff = 0 2014-03-27 03:14:04 +01:00
Hannes Janetzek
4f77643321 refactor: GdxMap 2014-03-27 03:14:04 +01:00
Hannes Janetzek
c7508d330d gwt: add vtm-web-js project 2014-03-27 03:14:04 +01:00
Hannes Janetzek
e6eab7f773 gwt: use canvas defined in html
- handle resize in js
- app option for tileSize in MapConfig js object
2014-03-27 03:14:04 +01:00
Hannes Janetzek
4115bdf4c0 make BitmapTileSource non-abstract 2014-03-27 03:14:03 +01:00
Hannes Janetzek
334943c094 add vtm-android-starterkit 2014-03-27 03:14:03 +01:00
Hannes Janetzek
c2b17899a2 add generic constructor for VectorTileLayer 2014-03-27 03:14:03 +01:00
Hannes Janetzek
966009e18e print trace on NPE 2014-03-27 03:14:03 +01:00
Hannes Janetzek
19b040c7e6 android: add accessor for mMap 2014-03-27 03:14:03 +01:00
Hannes Janetzek
4fb3d13404 refactor backend Adapter classes 2014-03-27 03:14:03 +01:00
Hannes Janetzek
4e4d4270db split vtm-web into library and vtm-web-app 2014-03-27 03:14:03 +01:00
Hannes Janetzek
1bbf77df0c gradle: update projects 2014-03-27 03:14:03 +01:00
Hannes Janetzek
07b2d57b52 rename vtm-gdx-* 2014-03-27 03:14:03 +01:00
Hannes Janetzek
f224486e70 rename vtm-gdx-dektop to vtm-desktop 2014-03-27 03:14:02 +01:00
Hannes Janetzek
211efc4d5a gradle: dont copy assets 2014-03-27 03:14:02 +01:00
Hannes Janetzek
53a705ead5 app++ 2014-03-27 03:14:02 +01:00
Hannes Janetzek
7673ab16e5 Merge branch 's3db' 2014-03-27 03:13:37 +01:00
Hannes Janetzek
37639f965c use vertexMapPool in ExtrusionLayer 2014-03-27 03:13:20 +01:00
Hannes Janetzek
2a58f43256 make KeyMap poolable 2014-03-27 03:13:20 +01:00
Hannes Janetzek
a377e96128 cleanup: ExtrusionLayer 2014-03-27 03:13:20 +01:00
Hannes Janetzek
e900b4243d fix: ExtrusionLayer get correct sumIndices 2014-03-27 03:13:20 +01:00
Hannes Janetzek
3b65983706 use GLShader for ExtrusionLayer 2014-03-27 03:13:20 +01:00
Hannes Janetzek
3b212214ab s3db: use custom keymap 2014-03-27 03:13:20 +01:00
Hannes Janetzek
d434c11e78 add KeyMap, custom key-only HashMap 2014-03-27 03:13:20 +01:00
Hannes Janetzek
bda73374ca compile extrusion layers into one vbo 2014-03-27 03:13:19 +01:00
Hannes Janetzek
0a76dafd9c fx: ExtrusionRenderer hacks 2014-03-27 03:13:19 +01:00
Hannes Janetzek
37ab92534a unify ExtrusionLayer vertex ids - TODO reduce allocations 2014-03-27 03:13:19 +01:00
Hannes Janetzek
6b388c12d1 s3db: add building material and colors 2014-03-27 03:13:19 +01:00
Hannes Janetzek
bcaaa0637a s3db: colors, no alpha 2014-03-27 03:13:19 +01:00
Hannes Janetzek
581cddaa0e ExtrusionRenderer:
- set matrix per tile, not per layer
- ExtrusionLayer must have a color
- add alpha option
- cleanups
2014-03-27 03:13:19 +01:00
Hannes Janetzek
967ad4cba4 use default roof color only for flat roofs 2014-03-27 03:13:19 +01:00
Hannes Janetzek
e52bed199a add cache for S3DB layer 2014-03-27 03:13:19 +01:00
Hannes Janetzek
feeebae5fb remove tile load CancellationException
- does not work with GWT async loading
2014-03-27 03:13:19 +01:00
Hannes Janetzek
f51fb210b8 refactor: split S3DB Layer/TileLoader 2014-03-27 03:13:19 +01:00
Hannes Janetzek
aeff737250 S3DB: handle building/roof:color tag 2014-03-27 03:13:19 +01:00
Hannes Janetzek
8064dda6ac add mesh-only mode to ExtrusionRenderer/Layer 2014-03-27 03:13:18 +01:00
Hannes Janetzek
eb41496c5a rename ExtrusionLayer public fields 2014-03-27 03:13:18 +01:00
Hannes Janetzek
c2112d68aa try different normal encoding 2014-03-27 03:13:18 +01:00
Hannes Janetzek
e67f4e8c62 s3db: add android example 2014-03-27 03:13:18 +01:00
Hannes Janetzek
c02287fc9b cleanup: BuildingLayer 2014-03-27 03:13:18 +01:00
Hannes Janetzek
a548e6c34b s3db: add S3DBLayer 2014-03-27 03:13:18 +01:00
Hannes Janetzek
a18d20a916 s3db: render meshes with ExtrusionRenderer 2014-03-27 03:13:18 +01:00
Hannes Janetzek
f929c15e2d cleanup: VectorTileLoader 2014-03-27 03:13:18 +01:00
Hannes Janetzek
5ad631f1ea skip rendering TileSet when zoom-level is not renderable 2014-03-27 03:13:18 +01:00
Hannes Janetzek
cb2aee6d60 make LayerRenderer.isReady() public 2014-03-27 03:13:18 +01:00
Hannes Janetzek
fb3e50cc88 s3db: add triangle geometry decoder 2014-03-27 03:13:18 +01:00
Hannes Janetzek
27750ac11e move depthOffset(Tile) to MapTile 2014-03-27 03:13:18 +01:00
Hannes Janetzek
ea711aea77 move example renderer to playground 2014-03-27 03:13:17 +01:00
Hannes Janetzek
ff56d5c67a Merge branch 'extract_shaders' 2014-03-27 03:12:45 +01:00
Hannes Janetzek
afea93be73 remove obsolete shader GlUtils functions 2014-03-27 03:10:48 +01:00
Hannes Janetzek
c6f44e7bbf gwt: use shader assets
- add some url options for 'map' and 'theme'
- use local asset folder
- merge assets in local directory
2014-03-27 03:05:44 +01:00
Hannes Janetzek
1b211df73e use GLShader for ExtrusionRenderer 2014-03-27 03:05:18 +01:00
Hannes Janetzek
bed1edbc82 use GLShader for MeshLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
1a9d3ca4fc use GLShader for BitmapLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
c107e197f5 use GLShader for LineTexLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
0fb0aa59c2 use GLShader for PolygonLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
357713b3a2 fix comments 2014-03-27 03:04:12 +01:00
Hannes Janetzek
b44ef4144b use GLShader for LineLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
eccbf58c80 use GLShader for TextureLayer 2014-03-27 03:04:12 +01:00
Hannes Janetzek
18f6784e81 add GLShader:
- load shaders from assets
- start to move shaders to asset files
2014-03-27 03:03:31 +01:00
Hannes Janetzek
4205d42e7f testing: GL_STATIC_DRAW buffers 2014-03-27 00:35:51 +01:00
Hannes Janetzek
83dbce18fe gwt: print error message only 2014-03-27 00:35:51 +01:00
Hannes Janetzek
5b58898975 gwt: allow to create empty textures.. 2014-03-27 00:35:51 +01:00
Hannes Janetzek
19bd1dab9f gwt: increase fps 2014-03-27 00:35:51 +01:00
Hannes Janetzek
5f18415bf9 gwt: use slf4j in libgdx 2014-03-27 00:35:51 +01:00
Hannes Janetzek
9a16899824 gdx: add esc to exit 2014-03-27 00:35:51 +01:00
Hannes Janetzek
d50a67527e desktop: change run parameters 2014-03-27 00:35:51 +01:00
Hannes Janetzek
d507022c4a cleanup: Extrusion style 2014-03-27 00:35:51 +01:00
Hannes Janetzek
56a223e6c6 SyncPool/Pool: allow to pool any subclass of Inlist 2014-03-27 00:35:51 +01:00
Hannes Janetzek
6113d284d8 add Map.setTheme(IRenderTheme) 2014-03-27 00:35:51 +01:00
Hannes Janetzek
913afab264 BufferObject: find minimal buffer larger than requested size 2014-03-27 00:35:50 +01:00
Hannes Janetzek
7587c1a041 example: add ThemeStylerActivity 2014-03-18 03:09:29 +01:00
Hannes Janetzek
537b53d877 fixup theme 2014-03-18 03:04:38 +01:00
Hannes Janetzek
1a521d2ad4 gwt: stop tile loading when state is not 'loading' 2014-03-18 02:51:03 +01:00
Hannes Janetzek
818ea0b0c7 gwt: use LoadDelayTask to only load max one tile per frame 2014-03-18 02:51:03 +01:00
Hannes Janetzek
a46940a6b1 remove tile load CancellationException
does not work with GWT async loading
2014-03-18 02:51:03 +01:00
Hannes Janetzek
b0217767b8 use RenderStyle.current() to get the active style 2014-03-18 02:51:03 +01:00
Hannes Janetzek
1b09774413 PolygonLayer: use temporary area style array 2014-03-18 02:51:02 +01:00
Hannes Janetzek
8f0c51675d TexturePool: add function to initialize item with bitmap 2014-03-18 02:51:02 +01:00
Hannes Janetzek
2e56e3facc start BitmapTileLayer pool 2014-03-18 02:51:02 +01:00
Hannes Janetzek
879e0ccb81 docs: MapRenderer 2014-03-18 02:51:02 +01:00
Hannes Janetzek
4688943290 cleanup AwtBitmap 2014-03-18 02:51:02 +01:00
Hannes Janetzek
641977b5ca add color conversion for rgb-hsv and parser for rgba() strings
parse rgb()/rgba() color strings
2014-03-18 02:51:02 +01:00
Hannes Janetzek
1127660f2d add GwtInput to disable key callbacks on Document 2014-03-18 02:51:02 +01:00
Hannes Janetzek
61e2be18ab move cast into addVertex 2014-03-18 02:51:02 +01:00
Hannes Janetzek
77d33bb02c name clipMode magic-numbers, docs 2014-03-18 02:51:02 +01:00
Hannes Janetzek
bd96c018f7 cleanup: Tag 2014-03-18 02:51:02 +01:00
Hannes Janetzek
31e1b0ec99 Merge branch 'tile_load_hooks' 2014-03-18 02:50:43 +01:00
Hannes Janetzek
8f94fa7ac5 add TileLoaderProcessHook to intercept MapElement processing 2014-03-18 02:47:41 +01:00
Hannes Janetzek
402e4c3cd6 let TileLoaderHook stop further processing
- return false when no other loader hook should process
  the current element
2014-03-18 02:47:41 +01:00
Hannes Janetzek
c234507edb move Label/Symbol data from MapTile to LabelTileData 2014-03-18 02:47:41 +01:00
Hannes Janetzek
20d5c20e72 move Text/Symbol handling to LabelTileLoaderHook 2014-03-18 02:47:41 +01:00
Hannes Janetzek
2d15324ead insert new hooks at front 2014-03-18 02:47:41 +01:00
Hannes Janetzek
bb2a86b5ac PathLayer - inner class should be static 2014-03-18 02:47:41 +01:00
Hannes Janetzek
56c4323959 docs: MapTile 2014-03-18 02:47:41 +01:00
Hannes Janetzek
a475aa6c22 use Object as ID for TileData 2014-03-18 02:47:41 +01:00
Hannes Janetzek
7b9f2ac6bd start TileLoaderHook:
- only create ExtrusionLayers when a BuildingLayer is attached
2014-03-18 02:47:41 +01:00
Hannes Janetzek
1f5efb9a33 refactor: MapTile hold generic TileData - Testing 2014-03-18 02:47:41 +01:00
Hannes Janetzek
8926c84ca9 docs: MatchingCacheKey 2014-03-18 02:47:40 +01:00
Hannes Janetzek
3eba47b0bb get theme from VectorTileLayer, instead of setting it on Loader 2014-03-18 02:47:40 +01:00
Hannes Janetzek
ff01b3f80d refactor: TileLoader.createLoader() 2014-03-18 02:47:40 +01:00
Hannes Janetzek
d00e9771e0 move TagFilter stuff to OsmTileLayer 2014-03-18 02:47:40 +01:00
Hannes Janetzek
5ebc5b6244 example: fix theme menu radio toggle 2014-03-18 02:47:32 +01:00
Hannes Janetzek
e7ad7110c8 example: move theme menu to base 2014-03-18 02:47:21 +01:00
Hannes Janetzek
192bd9c96c theme: slight orange primary roads 2014-03-18 02:47:13 +01:00
Hannes Janetzek
6188baa4db theme: add Newtron
- fix: VtmThemes enum
2014-03-18 02:46:38 +01:00
Hannes Janetzek
968d97f440 theme: disable tourism=info 2014-03-18 02:46:24 +01:00
Hannes Janetzek
2fd9addc59 reduce the exceptions thrown by theme loader to ThemeException 2014-03-18 02:43:32 +01:00
Hannes Janetzek
6f9d2dafb6 theme: just print error on lineSymbol in theme 2014-03-18 00:35:58 +01:00
Hannes Janetzek
0b68a9cf58 theme: disable (now working) area textures 2014-03-18 00:13:25 +01:00
Hannes Janetzek
d502ab2561 theme: rename newtron enum 2014-03-18 00:11:14 +01:00
Hannes Janetzek
fc9901e493 cleanup: move carto theme to not working mapnik tilesource 2014-03-18 00:09:58 +01:00
Hannes Janetzek
604c1449e4 Merge branch 'theme_refactor' 2014-03-17 23:24:46 +01:00
Hannes Janetzek
0a23dc2c27 theming changes:
- select="first" also add its renderstyles when no sub-rule matched
  ... before they where only added when one subrule matched

- use select="when-matched" as last subrule in select="first" rules
  instead.
2014-03-17 22:55:34 +01:00
Hannes Janetzek
c7805c82c6 remove LineSymbol 2014-03-17 22:54:08 +01:00
Hannes Janetzek
46b2eb2a3e rename theme style classes 2014-03-17 22:48:20 +01:00
Hannes Janetzek
4e473bf242 update LineBuilder 2014-03-17 22:01:03 +01:00
Hannes Janetzek
f80b4ee2b1 use AreaBuilder in XmlThemeBuilder:
- docs
- better Area field naming
2014-03-17 21:50:08 +01:00
Hannes Janetzek
ff7c74bc70 start Line and Area builders 2014-03-17 18:18:04 +01:00
Hannes Janetzek
14e5e28998 cleanups: theme/rule:
- rename destroy -> dispose
- use EMPTY_RULES array to avoid null checks
- squash: RuleVisitor
2014-03-16 15:34:50 +01:00
Hannes Janetzek
b879830045 start ThemeBuilder api 2014-03-16 15:31:15 +01:00
Hannes Janetzek
494e553ac0 app++ 2014-03-16 15:31:15 +01:00
Hannes Janetzek
a4555631b1 add TextBuilder for Text styles 2014-03-16 15:31:15 +01:00
Hannes Janetzek
a4cd4ad767 cleanup: XmlThemeBuilder:
- rename from -> read
- cleanup theme attribute validation
2014-03-16 15:31:15 +01:00
Hannes Janetzek
abade416df cleanup: RenderTheme 2014-03-16 15:31:15 +01:00
Hannes Janetzek
4e3fc1643d rename RenderThemeHandler - XmlThemeBuilder 2014-03-10 01:15:57 +01:00
Hannes Janetzek
61ca022d5b add select="when-matched" rule option 2014-03-10 01:15:49 +01:00
Hannes Janetzek
ca1a7b90d7 refactor: extract theme RulerBuilder from Rule 2014-03-10 01:13:21 +01:00
Hannes Janetzek
5a55e33f76 fix: ElementLayers, make sure setFrom() clears previous items 2014-03-09 21:46:13 +01:00
Hannes Janetzek
c24b4addfa serious refactor: TileLoader:
- no more duplication of TileLoaders for GWT ->
- decouple loadTile() from TileDataSource completed() call
- all TileDataSource MUST call completed(success) in any case now
2014-03-09 21:46:00 +01:00
Hannes Janetzek
a8f46fdd8d rewrite VelocityTracker to work with varying frequency samples
- improve fling behaviour
- should fix #49
2014-03-09 03:06:50 +01:00
Hannes Janetzek
6d3bc0caea remove MapTile.loader field for GWT 2014-03-08 13:20:26 +01:00
Hannes Janetzek
26846d752f change url, mod_tile now provides CORS 2014-03-08 13:19:22 +01:00
Hannes Janetzek
c17eb32a8b android logger.properties 2014-03-08 13:18:11 +01:00
Hannes Janetzek
f313bb30f7 libgdx api changes 2014-03-08 13:17:56 +01:00
Hannes Janetzek
12ad13c0af app++ 2014-03-06 17:15:29 +01:00
Hannes Janetzek
e3234ecf8d gradle: dont build parallel by default 2014-03-06 17:11:52 +01:00
Hannes Janetzek
397dd27649 jeo: desktop indoor example 2014-03-06 16:52:17 +01:00
Hannes Janetzek
5aefd7f5cb gradle: update jeo config 2014-03-06 16:51:47 +01:00
Hannes Janetzek
11870a500b Merge branch 'jeo' 2014-03-06 16:25:24 +01:00
Hannes Janetzek
2c133a87cb update Indoor example 2014-03-06 16:24:36 +01:00
Hannes Janetzek
bb439236d6 add gradle 2014-03-06 16:24:36 +01:00
Hannes Janetzek
a480ef4b8b update target sdk 2014-03-06 16:23:56 +01:00
Hannes Janetzek
3fd92982c4 add examples 2014-03-06 16:23:24 +01:00
Hannes Janetzek
9109da9784 add vtm-jeo 2014-03-06 16:23:24 +01:00
Hannes Janetzek
05b977be70 use android-logger 2014-03-06 16:18:29 +01:00
Hannes Janetzek
b04b5f235c fix NPE in SimpleWorker cleanup 2014-03-06 16:18:23 +01:00
Hannes Janetzek
10a00753e7 gradle: use daemon/parallel options 2014-03-04 20:14:14 +01:00
Hannes Janetzek
906ad1be15 Merge branch 'ios' 2014-03-04 20:14:05 +01:00
Hannes Janetzek
7605e55ac7 libs++ 2014-03-04 20:12:46 +01:00
Hannes Janetzek
4eeaf59075 gdx api changes 2014-03-04 20:12:46 +01:00
Hannes Janetzek
9a473e84dc add ios assets 2014-03-04 20:12:46 +01:00
Hannes Janetzek
1c4979bdaa add vtm-gdx-ios 2014-03-04 20:12:46 +01:00
Hannes Janetzek
3cda9684cb update README 2014-03-04 01:43:28 +01:00
Hannes Janetzek
1cec1bb0dc gdx api changes
- disable gdx-html build for now
2014-03-04 00:52:40 +01:00
Hannes Janetzek
5bb865a561 Merge branch 'gradle' 2014-03-01 16:57:27 +01:00
Hannes Janetzek
45dba44432 update README 2014-03-01 16:15:32 +01:00
Hannes Janetzek
3118086ff3 gradle: add android-example run task 2014-03-01 16:01:16 +01:00
Hannes Janetzek
cee96c9ed0 gradle: test configureondemand 2014-03-01 15:58:08 +01:00
Hannes Janetzek
1f1cd2ef57 package vtm-natives with gdx-desktop 2014-02-28 19:11:16 +01:00
Hannes Janetzek
ae808dce2e refactor BitmapTileLayer:
- move to layer.tile.bitmap
- extract BitmapTileLoader
- bring back GWT BitmapTileLayer to life
2014-02-28 19:11:16 +01:00
Hannes Janetzek
ec7f75cf67 set default max/min zoom 2014-02-28 19:11:16 +01:00
Hannes Janetzek
50e3794cb9 add getter for UrlTileSource.getUrl() 2014-02-28 19:11:15 +01:00
Hannes Janetzek
9fe4be522a theme: only add casing when core is rendered 2014-02-28 19:11:11 +01:00
Hannes Janetzek
7e2cd4459c cleanup: emu VectorTileLayer 2014-02-28 19:09:10 +01:00
Hannes Janetzek
d7914f4807 add VectorTileLayer constructor with TileSource 2014-02-28 19:09:10 +01:00
Hannes Janetzek
8068d6c25a fix: add default for VectorTileLoader.filterTags() 2014-02-28 19:09:10 +01:00
Hannes Janetzek
5134b522ae LineLayer: drop invalid lines 2014-02-28 19:09:10 +01:00
Hannes Janetzek
fdda6988ba LineLayer refactor:
- extract addLine()
- expand variable names
2014-02-28 19:09:10 +01:00
Hannes Janetzek
0ef16b6c5b improve LineLayer bevel joint 2014-02-28 19:09:10 +01:00
Hannes Janetzek
60438b2925 add Point utilities 2014-02-28 19:09:10 +01:00
Hannes Janetzek
9c138beb5d improve DebugTheme 2014-02-28 19:09:10 +01:00
Hannes Janetzek
5c05b81dfa LwHttp, ignore readers that try to close InputStream. 2014-02-28 19:09:09 +01:00
Hannes Janetzek
a98ddca171 add LwHttp constructor with additional request header items 2014-02-28 19:09:09 +01:00
Hannes Janetzek
96b512c831 add MapElement.toString() 2014-02-28 19:09:09 +01:00
Hannes Janetzek
d8e23fbafe fix: GeometryBuffer.startLine()
- *always* set end marker
2014-02-28 19:09:09 +01:00
Hannes Janetzek
2583ad2ce6 GeometryBuffer: return self for chaining, add toString() 2014-02-28 19:09:09 +01:00
Hannes Janetzek
5449d1cdd5 fix: clear depth buffer for tile clipping
- need to enable depthmask for clear
2014-02-28 19:08:37 +01:00
Hannes Janetzek
6d332f6ba9 docs: BitmapLayer 2014-02-24 16:03:34 +01:00
Hannes Janetzek
759e7b97b8 Merge branch 'gradle' 2014-02-24 16:03:18 +01:00
Hannes Janetzek
da6c0608a2 tryin travis 2014-02-24 16:01:09 +01:00
Hannes Janetzek
dac9b8adad gradle cleanups 2014-02-24 16:01:09 +01:00
Hannes Janetzek
c5479c18f6 use original libgdx 2014-02-24 15:09:33 +01:00
Hannes Janetzek
60f9ccc9f6 compile gwt with vtm-themes 2014-02-24 15:09:33 +01:00
Hannes Janetzek
df7fa68787 update gradle nexus 2014-02-24 15:09:33 +01:00
Hannes Janetzek
f193921432 extract theme assets to vtm-themes project 2014-02-24 15:09:33 +01:00
Hannes Janetzek
ff83629054 create eclipse configuration with gradle 2014-02-24 15:05:54 +01:00
Hannes Janetzek
ad62e26b59 remove eclipse project settings 2014-02-24 15:05:54 +01:00
Hannes Janetzek
3b232b403e add newtron theme 2014-02-24 15:05:17 +01:00
Hannes Janetzek
6e422ade94 add dotProduct for float[] 2014-02-24 15:03:22 +01:00
Hannes Janetzek
6d4f344326 add douglas-peucker simplifier 2014-02-24 15:03:22 +01:00
Hannes Janetzek
2241f3f27f add visvalingam-wyatt geometry simplification 2014-02-24 15:03:22 +01:00
Hannes Janetzek
e3b279ed6d cleanup: MarkerLayer, add simple ItemizedLayer constructor 2014-02-24 15:03:22 +01:00
Hannes Janetzek
1653e54541 cleanup: LineLayer 2014-02-24 15:03:22 +01:00
Hannes Janetzek
e947248ea4 make render-styles overrideable 2014-02-24 15:03:22 +01:00
Hannes Janetzek
8428f438db start OsmVectorLayer 2014-02-24 15:03:22 +01:00
Hannes Janetzek
6a40c3c375 extract OSM vector-tile specifics to OsmTileLayer 2014-02-24 15:03:22 +01:00
Hannes Janetzek
1b232cca84 make VectorTileLayer extendable 2014-02-24 15:03:22 +01:00
Hannes Janetzek
99cfdd6e14 make VectorTileLoader extendable 2014-02-24 15:03:21 +01:00
Hannes Janetzek
5c2eaf961f remove unused MapElement.priority 2014-02-24 15:03:21 +01:00
Hannes Janetzek
48fa5d5434 refactor: move tile layer classes back to layers.tile
they *really* belong there
2014-02-24 15:03:21 +01:00
Hannes Janetzek
6507b1369a add AbstractVectorLayer 2014-02-24 15:03:21 +01:00
Hannes Janetzek
e15163bb08 use EventDispatcher for Input- and Map-Events 2014-02-24 15:03:21 +01:00
Hannes Janetzek
940a753b41 fixup: boxtree 2014-02-24 15:03:21 +01:00
Hannes Janetzek
733d9dac96 fix: GeometryBuffer.getNumPoints() 2014-02-24 15:03:21 +01:00
Hannes Janetzek
3896358ba8 add ElementLayers.setFrom() 2014-02-24 15:03:21 +01:00
Hannes Janetzek
deff7d2a86 gdx: decrease scroll-zoom amount 2014-02-24 15:02:25 +01:00
Hannes Janetzek
b006cacc89 improve combined move/scale animation 2014-02-17 01:51:49 +01:00
Hannes Janetzek
2fc078e80d fix rotation in animateTo(MapPosition) 2014-02-17 01:51:45 +01:00
Hannes Janetzek
848449e32a extract VectorTileRenderer from TileRenderer 2014-02-16 23:40:07 +01:00
Hannes Janetzek
adb56c7613 refactor TileLayer:
- set specific TileRenderer in sub-class constructor
- remove TileLoader generics from TileLayer
2014-02-16 23:40:07 +01:00
Hannes Janetzek
5cffe3a3b3 fix: Animator.zoomTo() 2014-02-16 18:03:25 +01:00
Hannes Janetzek
46ad2be83b set default building height in VectorTileLoader 2014-02-16 16:08:11 +01:00
Hannes Janetzek
904360ff69 rename MapPosition.angle -> bearing 2014-02-16 04:22:36 +01:00
Hannes Janetzek
79b5a09ac8 big refactor: copy Viewport state for rendering 2014-02-16 04:15:25 +01:00
Hannes Janetzek
91d1e7b1a6 split Viewport modifiers into ViewController 2014-02-16 04:12:27 +01:00
Hannes Janetzek
46878c81b7 some Animator improvements
- fixes annoying zoomTo jumping
2014-02-16 04:11:05 +01:00
Hannes Janetzek
5d07d45f86 rename MapAnimator -> Animator 2014-02-15 17:13:23 +01:00
Hannes Janetzek
38c27c051d make fields protected to allow extending MapView 2014-02-15 14:18:02 +01:00
Hannes Janetzek
dc0d161c14 cleanup: MapView 2014-02-15 14:17:00 +01:00
Hannes Janetzek
9285ae8536 do not set Tile.SIZE in MapView constructor
this way users can change static Tile.SIZE before initiating
the MapView.
2014-02-15 14:16:09 +01:00
Hannes Janetzek
0aaca44795 cleanup: MapAnimator 2014-02-15 01:05:22 +01:00
Hannes Janetzek
106b45f0c4 make Viewport.MAX_TILT public 2014-02-15 01:05:17 +01:00
Hannes Janetzek
c6b27aadf0 cleanup: MapPosition 2014-02-15 00:37:20 +01:00
Hannes Janetzek
c299529ccb no mapsforge in here 2014-02-15 00:33:07 +01:00
Hannes Janetzek
77fa5b1fd0 fix: also copy MapPosition.tilt 2014-02-15 00:31:23 +01:00
Hannes Janetzek
478078dc23 add animateTo(MapPosition)
patch from Kimmo Vuorinen. Thanks!
2014-02-15 00:29:56 +01:00
Hannes Janetzek
eacc9a2d30 fix: double-tap, wait for second move event 2014-02-14 12:05:20 +01:00
Hannes Janetzek
d3b25cd3d5 docs 2014-02-14 12:03:59 +01:00
Hannes Janetzek
7468d0beeb put 'scale screen coordinates' into projection matrix 2014-02-14 12:03:17 +01:00
Hannes Janetzek
ea49b47afd cleanup: remove local.properties 2014-02-14 00:13:10 +01:00
Hannes Janetzek
ef395ddb39 Merge pull request #42 from mapzen/maven
Updates build.gradle for maven compatibility.
2014-02-14 00:06:47 +01:00
Chuck Greb
00ff342e86 Updates build.gradle for maven compatibility.
* Explicitly set support library version 19.0.1.
* Include slf4j-android dependency from maven central instead of local jar.
* Adds local.properties to .gitignore
2014-02-13 14:18:07 -05:00
Hannes Janetzek
eab9d26594 fix ext-libs 2014-02-13 00:55:25 +01:00
Hannes Janetzek
d56eb31aef use pre-package jnis for gradle... 2014-02-12 23:20:57 +01:00
Hannes Janetzek
ab0cadf81f unset MeshLayer heightOffset at start 2014-02-12 20:47:42 +01:00
Hannes Janetzek
e9d8cdd329 get JTS geometry from OSMElements 2014-02-12 20:46:41 +01:00
Hannes Janetzek
424f44ba12 double tap scale is back 2014-02-12 02:11:50 +01:00
Hannes Janetzek
8d350238cf add heightOffset for Line- and MeshLayer 2014-02-12 02:08:19 +01:00
Hannes Janetzek
27153c8093 LwHttp: handle 'Connection: close' header 2014-02-12 01:46:02 +01:00
Hannes Janetzek
3409f5ff3c libs++ 2014-02-10 23:22:35 +01:00
Hannes Janetzek
67e168bf92 app++ 2014-02-10 23:20:25 +01:00
Hannes Janetzek
78d125a0f6 move rotten tilesources to extras 2014-02-09 22:25:01 +01:00
Hannes Janetzek
320295bfba add AndroidGraphics.makeMarker() utility for loading rawResource 2014-02-09 20:35:12 +01:00
Hannes Janetzek
2df9e8fccc MarkerItem: change UID to hold Object 2014-02-09 19:59:26 +01:00
Hannes Janetzek
025c482725 MarkerItem: remove HotspotPlace already in MarkerSymbol 2014-02-09 19:57:15 +01:00
Hannes Janetzek
d3c03fb564 add Viewport.getBBox(int expand) to expand by gived pixels 2014-02-09 17:15:22 +01:00
Hannes Janetzek
4dfbf1f088 animate PathLayer example 2014-02-09 17:05:09 +01:00
Hannes Janetzek
3ef832efb8 PathLayer: run first update without delay 2014-02-09 17:04:00 +01:00
Hannes Janetzek
83b914d1b2 GeoPoint: cheaper range limiting 2014-02-09 17:03:24 +01:00
Hannes Janetzek
87f4277b8b add: Color.premulFade, fade should not be premultiplied by default 2014-02-09 17:02:15 +01:00
Hannes Janetzek
438c8d15e1 fix: do not unset alpha of BitmapLayer 2014-02-09 17:01:28 +01:00
Hannes Janetzek
fd87d1480d cleanup: Viewport 2014-02-09 17:00:50 +01:00
Hannes Janetzek
99b7a5eb74 MarkerLayer: check if touch hits within marker extents 2014-02-09 17:00:31 +01:00
Hannes Janetzek
eb9194fe73 MarkerLayer: render items in z-order 2014-02-09 16:59:19 +01:00
Hannes Janetzek
fccf3212e6 gradle: cleanups 2014-02-08 21:22:07 +01:00
Hannes Janetzek
f49c9e2b3a libs: jni for osx 2014-02-08 20:23:50 +01:00
Hannes Janetzek
14bc0aea74 refactor: move utility classes utils.math/geom 2014-02-08 19:47:00 +01:00
Hannes Janetzek
35566a2334 refactor: Viewport.getViewBox() -> getBBox() 2014-02-08 18:13:40 +01:00
Hannes Janetzek
c64eb9aa88 rename getViewport/Animator/Layer() to viewport/animator/layers()
- these are composite parts of Map
2014-02-08 17:48:01 +01:00
Hannes Janetzek
5ef8026ac4 refactor: extract MarkerRenderer from ItemizedLayer
- move ItemizedLayer stuff to MarkerLayer
- rename ItemizedIconLayer to ItemizedLayer
2014-02-08 17:48:01 +01:00
Hannes Janetzek
7f64fff46d BoxTree:
- use coordinates in Node to avoid calculation in query()
- inline node overlap check in query
2014-02-08 17:48:01 +01:00
Hannes Janetzek
1d0fcedeb0 update readme 2014-02-08 17:48:01 +01:00
Hannes Janetzek
46f8f7d22a copy assets, make androidstudio happy 2014-02-08 07:28:02 +01:00
Hannes Janetzek
1bda4d29e1 update to target sdk 19 2014-02-08 05:38:46 +01:00
Hannes Janetzek
316f4b7461 libs++ 2014-02-08 04:13:06 +01:00
Hannes Janetzek
ed179e6207 app++ 2014-02-08 03:42:56 +01:00
Hannes Janetzek
b0ebe7e0cf use TILE_LOADED event to trigger labeling 2014-02-08 03:42:28 +01:00
Hannes Janetzek
a26dea0065 disable GridLayer 2014-02-08 03:42:01 +01:00
Hannes Janetzek
7e4f314646 add gradle gdx builds 2014-02-08 03:36:44 +01:00
Hannes Janetzek
d836ffaad1 cleanup vtm-android 2014-02-08 03:01:37 +01:00
Hannes Janetzek
7bbb74b985 fix docs 2014-02-08 02:51:35 +01:00
Hannes Janetzek
cb82d4cc45 Merge branch 'gradle_build' 2014-02-08 01:45:37 +01:00
Hannes Janetzek
5b09735249 let MapActivity extend FragmentActivity 2014-02-08 01:42:01 +01:00
Hannes Janetzek
d1dbce8682 register MapView when Context is instance of MapActivity 2014-02-08 01:42:01 +01:00
Hannes Janetzek
ccb00b17a5 bump target SDK 2014-02-08 01:42:01 +01:00
Hannes Janetzek
5443cf5417 gradle stuff 2014-02-08 01:41:50 +01:00
Hannes Janetzek
a53568f100 refactor: TileManager/MapTile
- remove tile from TileManager cache when canceled
- changed MapTile.STATE_* to MapTile.State.*
2014-02-07 21:50:09 +01:00
Hannes Janetzek
77c933b7d8 docs: TileRenderer 2014-02-07 21:50:09 +01:00
Hannes Janetzek
ae24860d1e docs: TileManager 2014-02-07 21:50:09 +01:00
Hannes Janetzek
e71f866b14 docs: FastMath 2014-02-07 21:50:09 +01:00
Hannes Janetzek
ebaffdb123 rename Viewport.getMapViewProjection to getMapExtents
- add parameter to increase extents
2014-02-07 21:50:08 +01:00
Hannes Janetzek
dd954e3416 pass VectorTileLayer to LabelLayer and BuildingLayer 2014-02-07 21:50:08 +01:00
Hannes Janetzek
db780d9939 add TileManager TILE_LOADED/REMOVED events 2014-02-07 21:50:08 +01:00
Hannes Janetzek
655136f52d add EventDispatcher 2014-02-07 21:50:08 +01:00
Hannes Janetzek
bdc18c9eb6 add option to run SimpleWorker task onMainLoop before execution on worker-thread 2014-02-07 21:50:08 +01:00
Hannes Janetzek
bf2e0e44a8 use Inlist.List for MapTile.labels/symbols 2014-02-07 21:50:08 +01:00
Hannes Janetzek
6dddf614dd add Inlist iterator + LList 2014-02-07 21:50:08 +01:00
Hannes Janetzek
8aa9cafa5e make MapTile.node final 2014-02-07 21:50:08 +01:00
Hannes Janetzek
3ea697763f start quad tree for bounding boxes 2014-02-07 21:50:08 +01:00
Hannes Janetzek
59e6240766 fixup: MapRenderer 2014-02-07 21:50:08 +01:00
Hannes Janetzek
600bf2c105 add LineTexLayer randomize offset option 2014-02-07 21:50:08 +01:00
Hannes Janetzek
bb4bee7623 add GeometryUtils.squaredDistance(float[], a, b) 2014-02-07 21:50:08 +01:00
Hannes Janetzek
7ade143297 add ElementLayers.addMeshLayer/PolygonLayer
+ docs
2014-02-07 21:50:08 +01:00
Hannes Janetzek
cabd470709 cleanup: vtm-android 2014-02-07 21:50:08 +01:00
Hannes Janetzek
cefb9f367f cleanup: ItemizedIconLayer 2014-02-07 21:50:08 +01:00
Hannes Janetzek
aa1b2f32b1 cleanup: android-example 2014-02-07 21:50:08 +01:00
Hannes Janetzek
625c0ecc1c export slf4j api 2014-02-07 21:50:08 +01:00
Hannes Janetzek
76c7a49648 add RenderElement.getOffset() 2014-02-07 21:50:08 +01:00
Hannes Janetzek
8685b3331b update copyright, add authors 2014-02-07 21:50:08 +01:00
Hannes Janetzek
8157af9fb0 cleanup: remove orphaned file 2014-02-07 21:50:08 +01:00
Hannes Janetzek
9f7e8dbad7 formatter 2014-02-07 21:50:07 +01:00
Hannes Janetzek
842d20cf7b add BezierPath utility 2014-02-07 21:50:07 +01:00
Hannes Janetzek
bbaa19ef7b add GeometryBuffer.addPoint(Point) 2014-02-07 21:50:07 +01:00
Hannes Janetzek
83d36fe04b add Point.distance() 2014-02-07 21:50:07 +01:00
Hannes Janetzek
91d99c0efb add LineLayer.setDropDistance() for point reduction by distance 2014-02-07 21:50:07 +01:00
Hannes Janetzek
e80eae230c cleanup: remove redundant ipos 2014-02-07 21:50:07 +01:00
Hannes Janetzek
bfadf66053 increase minimal touch sloppiness to 2mm
#23
2014-02-02 00:06:53 +01:00
Hannes Janetzek
f95f31f5f3 fix: do not set uninitialized uniform 2014-02-02 00:06:53 +01:00
Hannes Janetzek
ccebf49e46 fix NPE: test mTileDataSource == null
fixes #34
2014-02-02 00:06:53 +01:00
Hannes Janetzek
ebc8cbcaf0 fix: reset currentTexId when surface is recreated
caused textured lines not to be rendered when resuming application
2014-02-02 00:06:53 +01:00
Hannes Janetzek
9b1eb04a51 docs 2014-02-02 00:06:53 +01:00
Hannes Janetzek
3c46fb15cf docs 2014-02-02 00:00:16 +01:00
Hannes Janetzek
f48144791b reset pinch scale delta when going into scale mode 2014-02-02 00:00:10 +01:00
Hannes Janetzek
a5c9b9edac reduce async task priority 2014-02-01 23:59:38 +01:00
Hannes Janetzek
5e722c091f fix: GridRenderer, do not recompile when no text is set
guess this fixes #29
2014-02-01 11:51:02 +01:00
Hannes Janetzek
b3125c607e fix: gwt compilation 2014-02-01 11:50:38 +01:00
Hannes Janetzek
f6f64deffb TileGridLayer 2014-01-31 03:56:30 +01:00
Hannes Janetzek
a828007c89 android example: use StamenToner bitmaps 2014-01-31 03:56:30 +01:00
Hannes Janetzek
50d9481d73 reduce default in-memory tile cache size 2014-01-31 03:56:29 +01:00
Hannes Janetzek
e99200cd61 cleanups 2014-01-31 03:56:29 +01:00
Hannes Janetzek
f631e6736f load mapsforge germany on low zoom-level... 2014-01-31 03:55:12 +01:00
Hannes Janetzek
8b645a0e8f Merge branch 'render_refactor' 2014-01-31 03:54:45 +01:00
Hannes Janetzek
ce69dde08a pass non-inverted scale to TextureRenderer 2014-01-31 03:42:22 +01:00
Hannes Janetzek
c5de7d6051 change parameter order to be more consistent 2014-01-31 03:42:21 +01:00
Hannes Janetzek
67d1813665 remove depth-projection from viewproj for tile rendering, again
- fixes issue with flickering when proxy tiles are drawn,
  where the depth buffer is used to remember previous
  clipping areas
2014-01-31 03:42:21 +01:00
Hannes Janetzek
e0e94f7286 cleanup TileRenderer 2014-01-31 03:42:21 +01:00
Hannes Janetzek
20ddff3d26 use depth clipping again but only when proxy tiles are drawn 2014-01-31 03:42:21 +01:00
Hannes Janetzek
5235e8483b refactor and cleanup RenderElement and related classes 2014-01-31 03:42:20 +01:00
Hannes Janetzek
e38c9a11ff use SimpleWorker to update PathLayer 2014-01-31 02:08:04 +01:00
Hannes Janetzek
e6c9bd09f1 fix NPE, handle CancellationException in BitmapTileLayer 2014-01-31 02:01:00 +01:00
Hannes Janetzek
3ad98603a4 fix: show markers that are partially on screen
this is more appropriate. closes #26
2014-01-29 03:57:03 +01:00
Hannes Janetzek
f5c162330a remove depth-buffer tile clipping
not needed anymore, yay!
2014-01-29 03:57:03 +01:00
Hannes Janetzek
a0111e09b7 MapRenderer: disable writes to stencil- and depth-buffer by default 2014-01-29 03:10:25 +01:00
Hannes Janetzek
bc28e0ed11 fix: LocationOverlay 2014-01-29 01:58:14 +01:00
Hannes Janetzek
be03c58402 update app
fixes #31
2014-01-29 01:23:58 +01:00
Hannes Janetzek
246d692dd7 cleanup: marker layer 2014-01-29 00:59:24 +01:00
Hannes Janetzek
aaf250dca4 show markers that are partially on screen 2014-01-29 00:56:50 +01:00
Hannes Janetzek
5ca313a9b2 fix: ItemizedLayer use item.getPoint()
closes #24
2014-01-29 00:54:34 +01:00
Hannes Janetzek
2ac7cfc7b9 add MapPosition.setByBoundingBox() 2014-01-28 17:45:35 +01:00
Hannes Janetzek
d52d761a5c add mapsforge activity to example 2014-01-28 17:45:08 +01:00
Hannes Janetzek
a7519724f8 fixup gwt 2014-01-28 07:31:09 +01:00
Hannes Janetzek
9b771595f8 reduce label flickering 2014-01-28 07:03:55 +01:00
Hannes Janetzek
beef0bfae9 more gesture improvements
good enough for today
2014-01-28 07:03:55 +01:00
Hannes Janetzek
a19a82cf6e no Closable for socket until Java 7
fixes #30
2014-01-28 05:02:24 +01:00
Hannes Janetzek
e300664a28 handle pivot for Viewport.rotateMap() and .scaleMap() consistenly 2014-01-28 05:01:36 +01:00
Hannes Janetzek
2525b60f86 improve gesture detection 2014-01-28 05:01:36 +01:00
Hannes Janetzek
0198f3d6af make start of move gesture dependent on dpi 2014-01-28 02:23:55 +01:00
Hannes Janetzek
0bc0d59446 start to improve gesture detection:
#21, #28
2014-01-28 01:57:00 +01:00
Hannes Janetzek
bda080f34f Merge branch 'refactor_labeling' 2014-01-28 01:03:19 +01:00
Hannes Janetzek
2c0eb751a7 disable clipping of way label segments for now 2014-01-28 01:01:15 +01:00
Hannes Janetzek
d70a6c5997 move WayDecorator to layers.tile.vector 2014-01-28 01:01:15 +01:00
Hannes Janetzek
b6d9ed254e splitup labeling 2014-01-28 01:01:15 +01:00
Hannes Janetzek
e620d15964 android: ScaleBar layer is back 2014-01-28 00:41:36 +01:00
Hannes Janetzek
cad5c1ed7b cancel tile loading when tile was removed from cache 2014-01-28 00:36:57 +01:00
Hannes Janetzek
3543b71671 fix NPE in LwHttp
hopefully this fixes #27, check mResposeStream != null.
release references to streams when socket is closed()
2014-01-28 00:36:57 +01:00
Hannes Janetzek
9351380645 fix: only write to cache when full content was read 2014-01-28 00:36:56 +01:00
Hannes Janetzek
666803250c fix: typo in api
fixes #25
2014-01-27 15:21:26 +01:00
Hannes Janetzek
c49618a653 Merge branch 'android_marker' 2014-01-27 15:16:53 +01:00
Hannes Janetzek
ffce767615 remove old Android.makeMarker() 2014-01-27 15:08:05 +01:00
Stephan Leuschner
9ec72aabe3 Update AndroidGraphics.java
add static makeMarker to create Marker from Drawable
2014-01-27 14:42:42 +01:00
Hannes Janetzek
8eb6377a69 fix: NPE in BitmapTileLayer
fixes #27
2014-01-27 14:35:24 +01:00
Hannes Janetzek
67edb98d12 fix deadlock: do not lock Viewport while calling MapAnimator
"GLThread 4500" prio=5 tid=11 MONITOR
at org.oscim.map.MapAnimator.updateAnimation(MapAnimator.java:~186)
  - waiting to lock <0x42105030> (a org.oscim.map.MapAnimator) held by tid=1 (main)

"main" prio=5 tid=1 MONITOR
    at org.oscim.map.Viewport.getMapPosition(Viewport.java:~111)
  - waiting to lock <0x42103368> (a org.oscim.map.Viewport) held by tid=11 (GLThread 4500)
  at org.oscim.map.MapAnimator.animateFling(MapAnimator.java:151)
2014-01-27 00:58:20 +01:00
Hannes Janetzek
d85782b055 add attribution/terms-of-use note 2014-01-26 21:58:39 +01:00
Hannes Janetzek
e0df6ce58a refactor: rename QuadTreeIndex to QuadTree 2014-01-26 20:36:08 +01:00
Hannes Janetzek
27dc7f1f2d refactor: rename QuadTree to Node 2014-01-26 20:36:07 +01:00
Hannes Janetzek
a42bd9684f LineLayer: drop line segments short than 1/8 2014-01-26 20:36:07 +01:00
Hannes Janetzek
457e3006a6 add debug draw for MeshLayer 2014-01-26 20:36:07 +01:00
Hannes Janetzek
4351ff82fc add FastMath.withinSquaredDistance() 2014-01-26 20:36:07 +01:00
Hannes Janetzek
7ae8ee4405 add GeometryUtils.squareSegmentDistance() 2014-01-26 20:36:07 +01:00
Hannes Janetzek
44fc754b6f OBB2D optimizaitons 2014-01-26 20:36:07 +01:00
Hannes Janetzek
77e2a6607c reduce default of bitmap tiles kept in memory 2014-01-26 20:36:07 +01:00
Hannes Janetzek
818e9ecbb8 what was this sqrt() for? 2014-01-26 20:36:06 +01:00
Hannes Janetzek
f8603dafe1 cleanup: Color 2014-01-26 20:36:06 +01:00
Hannes Janetzek
45b851c55c cleanup: Pool 2014-01-26 20:36:06 +01:00
Hannes Janetzek
0f02215e63 refactor: RenderElement:
- remove curItem
- rename verticesCnt -> numVertices
- add getter/setters
2014-01-26 20:36:06 +01:00
Hannes Janetzek
eff5935068 refactor: TextureItem:
- use different pools for TextLayer and bitmap tiles
  to always get the correct (matching) texture from
  pool.
- the common TextureItem pool is only used to provide
  the same api, it does not keep images or textures
2014-01-26 20:36:06 +01:00
Hannes Janetzek
fa2d3dd7a4 add GeometryUtils.area() for arrays 2014-01-26 20:36:06 +01:00
Hannes Janetzek
f2a140e414 add option to use MeshLayer for tile polygon rendering 2014-01-26 20:36:05 +01:00
Hannes Janetzek
dc37296750 use color from Area style in MeshLayer 2014-01-26 20:36:05 +01:00
Hannes Janetzek
36d540da18 Tessellator: process all polygons from GeometryBuffer
(not just the first)
2014-01-26 20:36:05 +01:00
Hannes Janetzek
a0586a1897 rename: ContinuousTask -> SimpleWorker 2014-01-26 20:36:05 +01:00
Hannes Janetzek
401b0bf2dc implement managing of tasks instances in ContinuousTask 2014-01-26 20:36:05 +01:00
Hannes Janetzek
c8d79ee6fc LineLayer.Renderer: pass relative scale 2014-01-26 20:36:05 +01:00
Hannes Janetzek
683e0733a5 add TileGridLayer wrapper for GridRenderer
set GridRenderer line- and text-style
2014-01-26 20:36:05 +01:00
Hannes Janetzek
baceacccd5 enable logging for gwt 2014-01-26 20:36:04 +01:00
Hannes Janetzek
ec1954a83a fix: gwt LwHttp emulation 2014-01-26 20:36:04 +01:00
Hannes Janetzek
9f626e3716 api changes: UrlTileSource
- move option to override getTileUrl() to UrlTileSource
- remove requirement to provide expected mime-type
- only need to use setExtension() when using the default
  url formatter.
2014-01-26 05:44:14 +01:00
Hannes Janetzek
cb629744ec testing tilecache for bitmap tiles 2014-01-25 23:35:20 +01:00
Hannes Janetzek
64c4c3b93c move getZoomLevelMin()/Max() to TileSource 2014-01-25 23:35:20 +01:00
Hannes Janetzek
a82da20981 TileCache: use dbName to acutally create multiple databases.. 2014-01-25 23:35:20 +01:00
Hannes Janetzek
1bda9aff3f LwHttp: take skip() position into account for writing to cache 2014-01-25 23:35:20 +01:00
Hannes Janetzek
305032707b google maps tiles 2014-01-25 23:35:19 +01:00
Hannes Janetzek
7f41a591c8 LwHttp: add workaround for bug in Android image decoder (around version 4.1.2) 2014-01-25 22:05:30 +01:00
Hannes Janetzek
ddb410fea0 rename DBG -> dbg, looks nicer imo 2014-01-25 21:35:22 +01:00
Hannes Janetzek
984a17ef35 LwHttp: add Buffer.skip() 2014-01-25 21:35:22 +01:00
Hannes Janetzek
3c133af4df LwHttp: provide user-agent in header 2014-01-25 21:35:22 +01:00
Hannes Janetzek
833f49eb35 refactor: theme...RenderInstruction -> theme.styles.RenderStyle 2014-01-25 20:42:32 +01:00
Hannes Janetzek
1e2837c33f reenable building layer in example 2014-01-25 20:41:48 +01:00
Hannes Janetzek
3e2a9a5187 rename: TileLayer.getTileLayer() -> .getTileRenderer() 2014-01-25 20:41:48 +01:00
Hannes Janetzek
142b2e143d android-example app name 2014-01-25 20:36:54 +01:00
Hannes Janetzek
5364651a94 cleanups 2014-01-25 20:36:54 +01:00
Hannes Janetzek
1170e4a91a implement LwHttp.Buffer.mark()/reset()
- fixes bitmap tile loading
2014-01-25 20:36:54 +01:00
Hannes Janetzek
a739c92f4a eclipse: gwt 2014-01-24 03:09:18 +01:00
Hannes Janetzek
93af135d6d eclipse: export slf4j 2014-01-24 03:09:08 +01:00
Hannes Janetzek
b2f0bd0e3d disable debug 2014-01-21 17:22:37 +01:00
Hannes Janetzek
154da99d40 fix: LwHttp cache writes 2014-01-21 16:51:30 +01:00
Hannes Janetzek
dc74949736 fix: sync ElementRenderer, add docs 2014-01-21 14:57:32 +01:00
Hannes Janetzek
404df03f25 cleanup: BitmapTileSource 2014-01-21 14:56:33 +01:00
Hannes Janetzek
b6cbc960f3 cleanup: VectorTileLoader 2014-01-21 14:56:14 +01:00
Hannes Janetzek
29189c77ff dbg-- 2014-01-21 05:42:03 +01:00
Hannes Janetzek
8890875a7f use FSAA on desktop 2014-01-21 05:32:37 +01:00
Hannes Janetzek
d2381e06fb add DebugTheme 2014-01-21 05:32:37 +01:00
Hannes Janetzek
1e34a823b3 cleanup: QuadTree 2014-01-21 05:32:37 +01:00
Hannes Janetzek
f2e1b33db5 cleanup: TextureItem 2014-01-21 05:32:32 +01:00
Hannes Janetzek
ec69fc7a68 fix typo 2014-01-21 05:29:40 +01:00
Hannes Janetzek
c027ebdbb4 update app 2014-01-21 05:25:16 +01:00
Hannes Janetzek
c8949194cc Merge branch 'unify_tilesources' 2014-01-21 05:24:03 +01:00
Hannes Janetzek
77088b84ad settings: export slf4j 2014-01-21 05:22:53 +01:00
Hannes Janetzek
9baf5b2b6e new BitmapTileLayer implementation 2014-01-21 05:22:53 +01:00
Hannes Janetzek
f9d262d6a7 cleanup 2014-01-21 05:22:53 +01:00
Hannes Janetzek
6e543303c6 simplify UrlTileDataSource initialization 2014-01-21 05:22:53 +01:00
Hannes Janetzek
94011804be add isValid() to Bitmap interface 2014-01-21 05:22:53 +01:00
Hannes Janetzek
652024c5dc fix: always initialize TileManager 2014-01-21 05:22:53 +01:00
Hannes Janetzek
c88d5707ad add ITileDataSink.setTileImage(bitmap) to interface 2014-01-21 05:22:53 +01:00
Hannes Janetzek
b70090ea3a refactor: add TileLayer.initLoader()
- need to initialize worker thread after (super) class is constructed
2014-01-21 05:22:53 +01:00
Hannes Janetzek
402cbe7e57 use LwHttp.Buffer to set limit on InputStream 2014-01-21 05:22:53 +01:00
Hannes Janetzek
9ed4bb6ec5 refactor: PbfTileDataSource -> UrlTileDataSource 2014-01-21 05:22:53 +01:00
Hannes Janetzek
764a62986e fix gwt: 'join' in PausableThread 2014-01-20 15:39:45 +01:00
Hannes Janetzek
ab2e82a456 Merge branch 'wip_android' 2014-01-19 22:57:40 +01:00
Hannes Janetzek
5b3c2ed1a8 TileCache: dont use ParcelFileDescriptor for now, cleanups 2014-01-19 22:57:17 +01:00
Hannes Janetzek
2fa0a53fdd cleanups 2014-01-19 22:57:17 +01:00
Hannes Janetzek
0b9e81a6c0 android-example: add BitmapTileLayer 2014-01-19 22:57:17 +01:00
Hannes Janetzek
350f6394fd vtm-android: dont force MapView to use MapActivity context 2014-01-19 22:57:17 +01:00
Hannes Janetzek
35d7d2c0b5 android-example: add theme chooser menu + stress test 2014-01-19 22:57:17 +01:00
Hannes Janetzek
e4eeae2821 cleanups: dont keep track of current theme in Map 2014-01-19 22:56:18 +01:00
Hannes Janetzek
b587990602 Merge branch 'tile_fade' 2014-01-19 22:55:49 +01:00
Hannes Janetzek
aba6cc5778 add tile fade effect:
use theme background color to overdraw tiles
2014-01-19 22:55:23 +01:00
Hannes Janetzek
90b005a2fd add MapRenderer.animate() to trigger animations on GL-Thread 2014-01-19 22:55:23 +01:00
Hannes Janetzek
2c7cd1c880 Merge branch 'wip_sync' 2014-01-19 22:53:48 +01:00
Hannes Janetzek
25c95da80c set MapTile.STATE_CANCEL when tile is cleared
in TileManager.jobCompleted clear tile when tile state is CANCEL
2014-01-19 22:51:27 +01:00
Hannes Janetzek
e76b0a3740 refactor TextRenderer, sync MapTile in Label-Thread 2014-01-19 22:51:27 +01:00
Hannes Janetzek
ec8821e557 cancel TileLoader job when thread shouldPause
- handle Exceptions in PbfTileDataSource, cleanup in finally{}
2014-01-19 22:51:27 +01:00
Hannes Janetzek
c2eac63ce6 fix: clear previous tile jobs when changing theme 2014-01-19 22:51:26 +01:00
Hannes Janetzek
0710e5776e fix deadlock on AndroidMap<>Viewport:
- on GL-Thread:
MapRenderer.draw()->MapAnimator->update()->AndroidMap.updateMap
                    [sync: Viewport       [sync: AndroidMap ]]
- on Mainloop:
AndroidMap.redrawMapInternal()->updateLayers()->Viewport.getMapPosition()
[sync:AndroidMap                               [sync:Viewport]]

... no need to sync on AndroidMap
2014-01-19 22:51:26 +01:00
Hannes Janetzek
42a6887ae2 fix: Color.fade() 2014-01-19 22:51:26 +01:00
Hannes Janetzek
348e63b4fb synchronize clearing TileLayer on its TileRenderer instead of global MapRenderer.drawlock 2014-01-19 22:51:26 +01:00
Hannes Janetzek
ab56e9c212 fix themes 2014-01-19 22:51:26 +01:00
Hannes Janetzek
2de6576765 fix PausableThread:
set 'mPausing = false' on thread after pause, not on call to proceed()
as the thread may already have been stopped in which case awaitPausing
will loop forever -- short: dont use thread utility classes you havent
written yourself :)
2014-01-19 22:51:26 +01:00
Hannes Janetzek
7d57b8e9ec merge Vec2 class into OBB2D 2014-01-19 22:51:26 +01:00
Hannes Janetzek
58e48088f9 update README 2014-01-17 21:19:57 +01:00
Hannes Janetzek
8a8cf64873 funky color path example 2014-01-17 21:09:38 +01:00
Hannes Janetzek
d76d5ca754 add Color.rainbow() 2014-01-17 20:43:16 +01:00
Hannes Janetzek
dd681e390d fix possible concurrent modification 2014-01-17 20:41:45 +01:00
Hannes Janetzek
143e981ad1 add MarkerLayer example 2014-01-17 19:23:10 +01:00
Hannes Janetzek
ec7b7276c5 flip MarkerLayer items over date-line 2014-01-17 19:21:55 +01:00
Hannes Janetzek
8ea6fef1ca improve MapRenderer
- add functions to bind shared VBOs
- make MapView field non-static
2014-01-17 19:19:01 +01:00
Hannes Janetzek
5e27740761 update slf4j android 2014-01-17 17:58:43 +01:00
Hannes Janetzek
f385725311 fix: async task, handle RejectedExecutionException 2014-01-17 15:13:04 +01:00
Hannes Janetzek
bfb86e0a57 use arrays for listeners (avoid allocating iterators) 2014-01-17 15:09:50 +01:00
Hannes Janetzek
828c6d9212 update README 2014-01-17 14:30:18 +01:00
Hannes Janetzek
6f14569da4 app++ 2014-01-17 14:16:05 +01:00
Hannes Janetzek
1f3124ac6e libs++ 2014-01-17 13:54:26 +01:00
Hannes Janetzek
a9db7989c3 add PathLayer example 2014-01-17 03:23:40 +01:00
Hannes Janetzek
4789ecb8d7 fix NPE: grow PathLayer point array 2014-01-17 03:22:46 +01:00
Hannes Janetzek
cf9bbec9a5 cleanup: remove mapsforge header template 2014-01-17 03:21:32 +01:00
Hannes Janetzek
4a5cfa5d5a add vtm-android-app submodule 2014-01-17 01:47:48 +01:00
Hannes Janetzek
96b5b09501 update JNI build instructions 2014-01-17 01:41:20 +01:00
Hannes Janetzek
d021ac4a6f fix html backend 2014-01-17 00:01:11 +01:00
Hannes Janetzek
b48f3fb1a2 move license files to root directory 2014-01-17 00:00:19 +01:00
Hannes Janetzek
b28ef3d877 update README 2014-01-16 23:15:24 +01:00
Hannes Janetzek
bb90488018 use TimSort from Android project 2014-01-16 23:14:24 +01:00
Hannes
1c7473e534 api: remove IRenderTheme.scaleStrokeWidth() 2014-01-16 23:14:24 +01:00
Hannes
aa5f11e754 update license headers 2014-01-16 23:14:24 +01:00
Hannes Janetzek
73e46e7a6f add sqlite tile cache 2014-01-14 18:20:54 +01:00
Hannes Janetzek
9ff8e149ef release handle to android native MotionEvent 2014-01-14 18:20:54 +01:00
Hannes Janetzek
98ea108b22 fix eclipse android project: compile with java 6 compliance mode 2014-01-14 18:20:54 +01:00
Hannes Janetzek
30714a3ba6 fix project classpath 2014-01-14 18:20:54 +01:00
Hannes Janetzek
05b0902754 add instructions for running GWT in superdevmode 2013-12-11 15:17:25 +01:00
Hannes Janetzek
ba52bfddbe add pluggable gesture detection
- extract inner Map.Layers class
- extract inner MapView.Map class -> AndroidMap
2013-12-08 20:54:24 +01:00
Hannes
68bfa27a99 return TileSource for chaining 2013-12-08 20:54:24 +01:00
Hannes Janetzek
50fb6c1531 remove deprecated method 2013-12-03 20:31:17 +01:00
Hannes Janetzek
3630155ad0 move vtm/jni to separate c project 2013-12-03 20:10:56 +01:00
Hannes Janetzek
c16ffef0bd add cacheLimit parameter to TileLayer constructor 2013-12-03 19:53:42 +01:00
Hannes Janetzek
16f4d85086 organize imports 2013-12-03 19:22:19 +01:00
Hannes Janetzek
467fbb386e Merge branch 'fix_mapsforge' 2013-12-03 01:19:25 +01:00
Hannes Janetzek
e6eecebf4e use IOUtils to close file 2013-12-03 01:18:53 +01:00
stleusc
0a474bd3d9 Close FileHandle 2013-12-03 01:11:08 +01:00
Hannes Janetzek
940a32668e add line-clipping to TileClipper 2013-12-03 01:09:59 +01:00
Hannes Janetzek
50ec62264e settings: link android libs folder 2013-12-03 01:09:59 +01:00
Hannes Janetzek
02706d40ef fix vtm-gdx-android build 2013-12-03 01:09:59 +01:00
Hannes Janetzek
294d50c50c Update README.md 2013-11-30 22:41:17 +01:00
Hannes Janetzek
4eae1575a3 workaround OpenJDK quirks - bytecode missing an implicit cast 2013-11-30 05:55:36 +01:00
Hannes Janetzek
ae414292c1 add some bitmap tile-sources 2013-11-27 15:40:39 +01:00
Hannes Janetzek
bda65d6ad3 remove orphaned class 2013-11-27 15:36:20 +01:00
Hannes Janetzek
9314e2bc0f build JNI on windows 2013-11-27 15:35:46 +01:00
Hannes Janetzek
f7308f748c libs++ 2013-11-26 14:02:21 +01:00
Hannes Janetzek
6c66b2d6eb html: extend GwtGL20 instead of emulating it 2013-11-26 13:57:01 +01:00
Hannes Janetzek
c40fc7faa3 remove orphaned file 2013-11-26 13:43:02 +01:00
Hannes Janetzek
104a9c689f use floats in LineClipper 2013-11-26 13:43:02 +01:00
Hannes Janetzek
215d1261ca SmbolLayer, use offset of individual items. Fixes #6 2013-11-26 13:43:02 +01:00
Hannes Janetzek
7533b98780 quadtree: add getParent(), abort on invalid index 2013-11-26 13:43:02 +01:00
Hannes Janetzek
153c9b3ec5 add list screen for examples 2013-11-26 13:43:02 +01:00
Hannes Janetzek
e33a863d3b set MapView clickable/focusable by default 2013-11-26 13:43:02 +01:00
Hannes Janetzek
bb02b5d461 add ext libs submodule 2013-11-25 18:05:55 +01:00
Hannes Janetzek
b9b1830451 update jni build docs 2013-11-23 21:19:41 +01:00
Hannes Janetzek
1d6bdcb0f2 simplify map listener handling 2013-11-23 21:19:41 +01:00
Hannes Janetzek
0b880e0f0c fix: clear labels should not always trigger relabeling 2013-11-23 21:19:41 +01:00
Hannes Janetzek
5cb3eb9dd1 update gwt 2013-11-23 21:19:41 +01:00
Hannes Janetzek
2d18e7d25f switch to slf4j 2013-11-23 21:19:40 +01:00
Hannes Janetzek
1cf2ea60a7 initialize PathLayer array properly 2013-11-23 21:19:40 +01:00
Hannes Janetzek
33d5e39869 reduce number of array accesses 2013-11-23 21:19:40 +01:00
Hannes Janetzek
7f4825afa5 GeometryBuffer: use 'pointLimit' field in addPoint 2013-11-23 21:19:40 +01:00
Hannes Janetzek
46b641c6cc update formatter 2013-11-23 21:19:40 +01:00
Hannes Janetzek
afeaf60c3f make extrusion-layer themeable 2013-11-23 21:19:40 +01:00
Hannes Janetzek
a5c3f92826 add Color int-to-float utility 2013-11-23 21:19:40 +01:00
Hannes Janetzek
d0dd09a5a4 docs 2013-11-23 21:19:40 +01:00
Hannes Janetzek
bd0b45d0b4 fix android min-sdk 2013-11-23 21:19:40 +01:00
Hannes Janetzek
75206211f8 ignore++ 2013-11-23 21:19:40 +01:00
Hannes Janetzek
0d62cc5279 add GdxMapApp.init(GdxMap, config, size) for simple test-cases 2013-11-23 21:19:40 +01:00
Hannes Janetzek
eb8fd81aef use TileClipper for mapsforge tiles 2013-11-23 21:19:40 +01:00
Hannes Janetzek
d44489819a add TileClipper 2013-11-23 21:19:40 +01:00
Hannes Janetzek
6a28480510 PolygonLayer: repeat pattern textures 2013-11-23 21:19:40 +01:00
Hannes Janetzek
3b92134b2a TextRenderer: handle 'clear' on update to remove all previous labels 2013-11-23 21:19:40 +01:00
Hannes Janetzek
af4df27d42 fix GeometryBuffer.clear(), first index should never be -1 2013-11-23 21:19:40 +01:00
Hannes Janetzek
19ee048582 add theme debugging switch 2013-11-23 21:19:40 +01:00
Hannes Janetzek
6bc24595da place area text on polygon 2013-11-23 21:19:40 +01:00
Hannes Janetzek
03908dc437 move theme textures 2013-11-23 21:19:40 +01:00
Hannes Janetzek
82061f1410 RenderTheme:
- use Area 'stroke' for rendering
- rename style-outline to outline-layer
- add 'outline' option to line for referencing outline-layer
- Text/Symbol remove 'symbol' String, only hold TextureRegion for symbol
- rename text options: font-size to size, font-style to style
- some refactoring
2013-11-23 21:19:40 +01:00
Hannes Janetzek
0ae1f99269 disable special 'thin-line' rendering again 2013-11-23 21:19:40 +01:00
Hannes Janetzek
0762e13c0f RenderTheme: add <m select="first">
- this stops checking sub-rules after first match
- the rules renderinstruction will only applied when
  any subrule matched
2013-11-23 21:19:40 +01:00
Hannes Janetzek
fc1a907af0 fix: no NPE when theme is invalid 2013-11-23 21:19:40 +01:00
Hannes Janetzek
9189cbd51c move ThemeException to IRenderTheme 2013-11-23 21:19:40 +01:00
Hannes Janetzek
18d0bfc3c5 make TileManager.jobQueue private
- use hasTileJobs(), getTileJob(), jobCompleted() instead
2013-11-23 21:19:39 +01:00
Hannes Janetzek
e35f39c9f4 add BufferObject.isMaxFill(), used to reduce number of in-memory tiles 2013-11-23 21:19:39 +01:00
Hannes Janetzek
af37be4502 BufferObject: 'flip' buffer automatically when position != 0 2013-11-23 21:19:39 +01:00
Hannes Janetzek
c07709803c fix animateToBBox 2013-11-23 21:19:39 +01:00
Hannes Janetzek
8ab84c4e85 updates themes:
- nicer amenity area color
- add osmarender symbols
- use 'extrusion' layer styles
- keep meadow and conservation below residential
- fade wood on zoomlevel 8
2013-11-23 21:18:50 +01:00
Hannes Janetzek
5367fe4537 fix: annotations.jar missing from classpath 2013-11-23 21:11:05 +01:00
Hannes Janetzek
03f5c7fc39 ignore++ 2013-11-23 21:11:05 +01:00
Hannes Janetzek
82f169f2d5 TagSet: refactor + add docs
- removed duplicate hasKey/hasValue functions
- renamed asString -> toString
2013-11-23 21:11:05 +01:00
Hannes Janetzek
a6c2ac1d41 cleanup: remove orphaned class 2013-11-23 21:11:05 +01:00
Hannes Janetzek
d1fa4d426f update GWT emulation 2013-11-23 21:11:05 +01:00
Hannes Janetzek
53572671de add ThemeException, formatting 2013-11-23 21:11:04 +01:00
Hannes Janetzek
b5ec02e2a0 init static fillCoordinates outside of constructor 2013-11-23 21:11:04 +01:00
Hannes Janetzek
f236fa33de add 'Extrusion' RenderInstruction to RenderTheme 2013-11-23 21:11:04 +01:00
Hannes Janetzek
206003e1ec improve tag-replacement(for theme cache) in VectorTileLoader 2013-11-23 21:11:04 +01:00
Hannes Janetzek
7c090e921a remove 'heigh','minHeight' fields from MapElement 2013-11-23 21:11:04 +01:00
Hannes Janetzek
5775c8cbf3 use @CheckReturnValue for safer pool/Inlist usage 2013-11-23 21:11:04 +01:00
Hannes Janetzek
d771d70c3a remove TagSet.EMTPTY 2013-11-23 21:11:04 +01:00
Hannes Janetzek
47e6602f9b add GdxMap.onKeyDown() for direct use in subclasses, should be in Map maybe 2013-11-23 21:11:04 +01:00
Hannes Janetzek
f4224eb4d1 gdx: update to current libgdx API 2013-11-23 21:11:04 +01:00
Hannes Janetzek
3c3d68d073 fix warning for MatchingCacheKey.equals() 2013-11-23 21:11:04 +01:00
Hannes Janetzek
7ef611945d Tessellator: formatting, dbg-- 2013-11-23 21:11:04 +01:00
Hannes Janetzek
f807e003fd TextureItem: docs 2013-11-23 21:11:04 +01:00
Hannes Janetzek
9107beff7e throw exception when layer type is invalid 2013-11-23 21:11:04 +01:00
Hannes Janetzek
d7b3ef43d6 use default glCullFace 2013-11-23 21:11:04 +01:00
Hannes Janetzek
538998cb83 throw exception when BufferObjects got lost 2013-11-23 21:11:04 +01:00
Hannes Janetzek
3e4aa25446 increase MAX_ZOOM default 2013-11-23 21:11:04 +01:00
Hannes Janetzek
f34d23ca18 back to default OSM service 2013-11-23 21:11:04 +01:00
Hannes Janetzek
0cf7364c78 TextRenderer: cleanup, use label in loop 2013-11-23 21:11:04 +01:00
Hannes Janetzek
620ce368b5 use CheckReturnValue for BufferObject.release() 2013-11-23 21:11:04 +01:00
Hannes Janetzek
5b2cd72940 fix: cast to long for shift 2013-11-23 21:11:04 +01:00
Hannes Janetzek
92abdbb328 also *throw* exception 2013-11-23 21:11:04 +01:00
Hannes Janetzek
c1bb637fbf fix: SymbolLayer first item from prevTextures could not have been removed 2013-11-23 21:11:04 +01:00
Hannes Janetzek
9653c02b46 add PointF 2013-11-23 21:11:04 +01:00
Hannes Janetzek
1226e6c292 add MapPosition(lat,lon,scale), Map.setMapPosition(lat,lon,scale) 2013-11-23 21:11:04 +01:00
Hannes Janetzek
170e8287ab add GeometryBuffer.translate(x,y)/scale() functions 2013-11-23 21:11:04 +01:00
Hannes Janetzek
01d98cbcb7 add Color.fade(color, alpha) 2013-11-23 21:11:04 +01:00
Hannes Janetzek
32d17cca18 utils.pool: remove debug + docs 2013-11-23 21:11:03 +01:00
Hannes Janetzek
113f8180cc reset GL program and texture state each frame 2013-11-23 21:11:03 +01:00
Hannes Janetzek
4ccc8ed147 add TileSet.contains(Tile) 2013-11-23 21:11:03 +01:00
Hannes Janetzek
68cd2f345a GeometryUtils: add docs 2013-11-23 21:11:03 +01:00
Hannes Janetzek
ed7ff6e7a1 improve LineLayer rendering 2013-11-23 21:11:03 +01:00
Hannes Janetzek
c05710fcdb oscim.core.Tag: cleanups
- consistent String constants
2013-11-23 21:11:03 +01:00
Hannes Janetzek
2db1cf8b6c org.oscim.backend: docs and cleanups 2013-11-23 21:11:03 +01:00
Hannes Janetzek
a9d9c97bff move 'fillCoordinates' and uploadLayers from MapRenderer to ElementRenderer
- handle MeshLayer in ElementRenderer
2013-11-23 21:11:03 +01:00
Hannes Janetzek
c519a4f34b start of MeshLayer for 2D Meshes w/ tessellation 2013-11-23 21:11:03 +01:00
Hannes Janetzek
836f6a60e0 improve Tessellator, no more 'synchronized' needed
- pass VertexItem arrays to tessGetVertices/Indices until
  everything is fetched
- re-reverse vertices in jni
2013-11-23 21:11:03 +01:00
Hannes Janetzek
768df7f6d6 some hints for building jni 2013-11-23 21:11:03 +01:00
Hannes Janetzek
3161013481 add VertexItem.getSize() 2013-11-23 21:11:03 +01:00
Hannes Janetzek
39c0fcafea share GL reference in RenderElement 2013-11-23 21:11:03 +01:00
Hannes Janetzek
47b8a379a4 ignore++ 2013-11-23 21:11:03 +01:00
Hannes Janetzek
beba45fcdf use ArrayUtils.reverse(), some cleanups and docs 2013-11-23 21:11:03 +01:00
Hannes Janetzek
4c77ae6c4b add ArrayUtils.reverse() 2013-11-23 21:11:03 +01:00
Hannes Janetzek
178f096b60 add Inlist.appendList(), rename append() to appendItem() 2013-11-23 21:11:03 +01:00
Hannes Janetzek
3782ab8f57 project settings: remove cdt builder 2013-11-23 21:11:03 +01:00
Hannes Janetzek
86a77a77d6 update to new libgdx api 2013-11-23 21:11:03 +01:00
Hannes Janetzek
0c175119b9 desktop: remove duplicated GdxGL20, wrap LwjglGL20 2013-11-23 21:11:03 +01:00
Hannes Janetzek
1fd50d1faa desktop: export jars 2013-11-23 21:11:03 +01:00
Hannes Janetzek
c720cf22aa consistent formatting 2013-11-23 21:10:22 +01:00
Hannes Janetzek
57dfd91378 add TestLogger 2013-11-23 21:10:21 +01:00
Hannes Janetzek
ab53fecce5 vtm-gdx: key for tronrender theme 2013-11-23 21:10:21 +01:00
Hannes Janetzek
5a602786f3 add some example code 2013-11-23 21:10:21 +01:00
Hannes Janetzek
31e1fce550 settings: formatter 2013-11-23 21:10:21 +01:00
Hannes Janetzek
b7b15e120a use jars from vtm-ext-libs 2013-11-23 21:10:21 +01:00
Hannes Janetzek
973949180f add FIXME 2013-11-23 21:10:21 +01:00
Hannes Janetzek
425c12593b enable PolygonLayer pattern textures and repeat (tile_size/texture_width) times 2013-11-23 21:10:21 +01:00
Hannes Janetzek
fa28799a5b fix: also clear unused ELEMENT_ARRAY vbos 2013-11-23 21:10:21 +01:00
Hannes Janetzek
5c011a2402 reduce points on-the-fly while reading from mapfile 2013-11-23 21:10:21 +01:00
Hannes Janetzek
8a2060ca6e make constructor public 2013-11-23 21:10:21 +01:00
Hannes Janetzek
e40d7136f1 FIX: jogl seems to be picky about flip to limit reads 2013-11-23 21:10:21 +01:00
Hannes Janetzek
7e6833d5fd try to load external themes from asset path first 2013-11-23 21:10:21 +01:00
Hannes Janetzek
21020abcbd theme: add osmarender patterns 2013-11-23 21:10:21 +01:00
Hannes Janetzek
da4d1c1ee7 use libtess-jni in ExtrusionLayer, remove Triangle 2013-11-23 21:10:20 +01:00
Hannes Janetzek
bc3885cd54 remove commented code 2013-11-23 21:10:20 +01:00
Hannes Janetzek
8cc115a108 fix: make updateAnimation synchronized 2013-11-23 21:10:20 +01:00
Hannes Janetzek
4aae6c0a09 fix MapAnimator: ensure 'adv' is within 0..1 2013-11-23 21:10:20 +01:00
Hannes Janetzek
3608e49885 formatting 2013-11-23 21:10:20 +01:00
Hannes Janetzek
df9d94ac51 simplify LayerRenderer, move setMatrix to ElementRenderer 2013-11-23 21:10:20 +01:00
Hannes Janetzek
19b32adc34 add docs 2013-11-23 21:10:20 +01:00
Hannes Janetzek
5ce9024eae use MapRenderer.frametime 2013-11-23 21:10:20 +01:00
Hannes Janetzek
c093fe3b0c add TouchListener Interface 2013-11-23 21:10:20 +01:00
Hannes Janetzek
ba9300da91 API: remove Map.setMapCenter() -> use Map.setMapPosition 2013-11-23 21:10:20 +01:00
Hannes Janetzek
510c201e17 jni: add missing include 2013-11-23 21:10:20 +01:00
Hannes Janetzek
7dde869f4a refactor: utils.GlUtils -> renderer.GLUtils, utils.Matrix4 -> renderer.GLMatrix
- init 'GL' handle of rendering classes in MapRenderer.onSurfaceCreated,
  at this point handle is safe to use, i.e. GL context is available
- all LayerRenderer share one static 'GL' field now
2013-11-23 21:10:20 +01:00
Hannes Janetzek
83a276becf cleanups 2013-11-23 21:10:20 +01:00
Hannes Janetzek
4fadd929ee add docs 2013-11-23 21:10:20 +01:00
Hannes Janetzek
f049673412 add file header 2013-11-23 21:10:20 +01:00
Hannes Janetzek
43de62f4bc use Closeable interface in IOUtils 2013-11-23 21:10:20 +01:00
Hannes Janetzek
eab0f5e87a remove unused functions 2013-11-23 21:10:20 +01:00
Hannes Janetzek
57b94e1d5d theme: use our schema 2013-11-23 21:10:20 +01:00
Hannes Janetzek
0dc0ec9394 cleanup VectorTileLoader 2013-11-23 21:10:20 +01:00
Hannes Janetzek
eada09d060 API: SymbolItem add set(x,y,symbol,billboard) 2013-11-23 21:10:20 +01:00
Hannes Janetzek
61e9deb101 use new GeometryBuffer functions 2013-11-23 21:10:20 +01:00
Hannes Janetzek
949ebb5d8e API: GeometryBuffer add getNumPoints(), getPoint():PointF
- ignore start of new geometry when the current is empty
2013-11-23 21:10:20 +01:00
Hannes Janetzek
1a4e3b4c7c combine mStrokeScale and mLineScaleFactor 2013-11-23 21:10:20 +01:00
Hannes Janetzek
d91402da3c add getters for MapTile state, modify 'state' only within package
- clear tile in TileManager when loading has failed
2013-11-23 21:10:19 +01:00
Hannes Janetzek
0107ade039 fix MapAnimator.animateTo()
- cleanups
2013-11-23 21:10:19 +01:00
Hannes Janetzek
f6bb944907 API: add TileSet.{lockTiles,releaseTiles,setTiles} 2013-11-23 21:10:19 +01:00
Hannes Janetzek
e5761ef601 fix warnings, cleanups 2013-11-23 21:10:19 +01:00
Hannes Janetzek
1421a1f6b6 API: remove TileSource.getMapInfo(), cleanups
- move MapInfo to mapfile package
2013-11-23 21:10:19 +01:00
Hannes Janetzek
1738bfd0bc remove DebugSettings class 2013-11-23 21:10:19 +01:00
Hannes Janetzek
4f1b3f262b refactor and document Map
- merge Layers into Map
- change UpdateEvent to Map.UpdateListener
- make updateLayers protected
2013-11-23 21:10:19 +01:00
Hannes Janetzek
9a82c24a89 cleanup and document Viewport
- rename project() to toScreenPoint()
2013-11-23 21:10:19 +01:00
Hannes Janetzek
3b5539da22 cleanup: unused code 2013-11-23 21:10:19 +01:00
Hannes Janetzek
b71ef1667c remove obsolete class 2013-11-23 21:10:19 +01:00
Hannes Janetzek
96b582b58d fix function signature 2013-11-23 21:10:19 +01:00
Hannes Janetzek
7a35bb48b1 API: PolygonLayer add addPolygon(GeometryBuffer) 2013-11-23 21:10:19 +01:00
Hannes Janetzek
15aa35e56f API: LayerRenderer add isReady() 2013-11-23 21:10:19 +01:00
Hannes Janetzek
7f4cdc86bc workaround: strip shader 'precision' qualifier for desktop GL 2013-11-23 21:10:19 +01:00
Hannes Janetzek
131876463a add jni build instructions and remove build files 2013-11-23 21:10:19 +01:00
Hannes Janetzek
36a721a8e1 fixup Layer 2013-11-23 21:10:19 +01:00
Hannes Janetzek
a660048bcb gdx: simplify sub-classing GdxMap apps, add createLayers() 2013-11-23 21:10:19 +01:00
Hannes Janetzek
1498325ecd settings: export libs and projects 2013-11-23 21:10:19 +01:00
Hannes Janetzek
1c0315cd54 docs 2013-11-23 21:10:19 +01:00
Hannes Janetzek
d50a6fa203 fix: assets path links for eclipse 2013-11-23 21:10:19 +01:00
Hannes Janetzek
876b8b6d37 refactor: IRenderCallback -> IRenderTheme.Callback
- more consistent function names
2013-11-23 21:10:19 +01:00
Hannes Janetzek
1137f48882 fix: ensure that variables are not modified while rendering 2013-11-23 21:10:19 +01:00
Hannes Janetzek
2f9e303889 refactor: for -> while 2013-11-23 21:10:19 +01:00
Hannes Janetzek
027c2e7618 theme: change some theme attribute names and fix renderTheme.xsd
- element '<use-* name="x">' changed to <* use="x">
- style 'name' attribute changed to 'id'
2013-11-23 21:10:18 +01:00
Hannes Janetzek
8fe8c3a1f2 refactor: merge BitmapUtils.createBitmap() into CanvasAdapter 2013-11-23 21:10:18 +01:00
Hannes Janetzek
0f52eff9c9 comment out all InputLayer stuff 2013-11-23 21:10:18 +01:00
Hannes Janetzek
4e01de31f7 some event mechanism 2013-11-23 21:10:18 +01:00
Hannes Janetzek
5389f59df0 jni: use double coordinates in Triangle. try to return safely when internal error occured 2013-11-23 21:10:18 +01:00
Hannes Janetzek
67a3cbadf7 package/naming reorganization:
- RenderLayer -> LayerRenderer
  as this LayerRenderer just the rendering implementation of a Layer
  - not a 'layer' itself
- move renderer.sublayer.*Renderer into their respective *Layer classes
- move layers.labeling to layers.tile.vector.labeling
  (until there is a common labeling framework)
- remove layers.overlay
  - move Marker stuff to layers.marker
- merge TileRenderer into TileRenderLayer

- rename renderer.sublayers to renderer.elements
- move layers.tile.* to tiling package
- move tilesource.* to tiling.source

- rename oscim.view -> oscim.map
2013-11-23 21:09:30 +01:00
Hannes Janetzek
c6eedc4df7 eclipse: link relative assets path 2013-10-09 02:38:01 +02:00
Hannes Janetzek
7c0e1540cb RenderTheme: ignore missing symbol atlas for now. formatting 2013-10-09 02:38:01 +02:00
Hannes Janetzek
d05c4ad0d1 return null when asset cannot be read 2013-10-09 02:38:01 +02:00
Hannes Janetzek
6f2f74089b theme: start porting osmarender theme 2013-10-09 02:38:01 +02:00
Hannes Janetzek
e43545eec9 html: fix
- maybe some 'dependency injection' might help here
  behaviour of static vars is kind of nasty with GWT
2013-10-09 02:38:01 +02:00
Hannes Janetzek
3eca8ee8b4 remove orphaned classes 2013-10-09 02:38:01 +02:00
Hannes Janetzek
0aa7818731 API change: RenderLayer
- use setReady(bool) instead of public field
- no more implicit call to compile() when 'newData' is true
  -> call compile() when needed
- make RenderLayer function protected
2013-10-09 02:38:01 +02:00
Hannes Janetzek
eb1e8b63c5 refactor: extract animation stuff from Viewport into MapAnimator 2013-10-09 02:38:01 +02:00
Hannes Janetzek
51c2c5d62a optimize: inline temporary variable in shader 2013-10-09 02:38:01 +02:00
Hannes Janetzek
2474fe621b ITileCache: remove setStoragePath from API 2013-10-09 02:38:01 +02:00
Hannes Janetzek
6fbfeb2848 refactor: change Layer.destroy to Layer.onDetach 2013-10-09 02:38:01 +02:00
Hannes Janetzek
d397624fdc refactor: PointD -> Point, remove PointF 2013-10-09 02:38:00 +02:00
1780 changed files with 159012 additions and 67040 deletions

11
.gitattributes vendored Normal file
View 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

50
.gitignore vendored
View File

@@ -1,24 +1,36 @@
*/bin/*
*/gen/*
*/obj/*
target/
build/
robovm-build
*.o
*.jar
*.so
*.class
vtm/jni/jni-headers/
vtm/jni/build*
vtm/jni/*.mk
vtm/jni/memcpy_wrap.c
vtm/jni/poly2tri/
vtm/libs/
vtm-gdx-html/war/assets/
vtm-gdx-html/war/WEB_INF/
vtm-gdx-html/war/org.oscim.gdx.GwtDefinition/
vtm-gdx-html/gwt-unitCache
vtm-gdx-ios/
vtm-spatialite/
vtm-spatialite-android/
vtm-ext-libs/
tmp/
themes/
vtm/assets/freizeitkarte/
vtm/jni/target/
/vtm-tests/tmp/
/vtm-web/war/
/vtm-web/assets/
/vtm-web/gwt-unitCache
/vtm-web-app/war/WEB-INF/
/vtm-web-app/assets/
/vtm-web-app/src/main/webapp/
/vtm-web-js/war/WEB-INF/
/vtm-web-js/assets/
/vtm-web-js/src/main/webapp/
/vtm-spatialite/
/vtm-spatialite-android/
/vtm-examples/
/vtm-osmscout/
.gradle
.idea
*.iml
.settings
.classpath
.project
project.properties
local.properties
/ma*/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "libtess2"]
path = jni/jni/libtess2
url = https://github.com/memononen/libtess2.git

32
.travis.yml Normal file
View File

@@ -0,0 +1,32 @@
sudo: false
language: android
jdk:
- openjdk8
env:
global:
- ANDROID=28
- ANDROID_BUILD_TOOLS=28.0.3
- GRADLE_OPTS="-Xmx2048m"
- secure: sW674wuFZOuoX7jHQHDbX3j8NxL8JxR07cyq+CrrqJ537dU9lxWQmMBRUpOb+p/q7sQ74PUtiKJkmFgKCSJSAKY+nr6GJ8P/q6u5TUKbmUWODSn8znehX2zualfvFwpF4PILok/wUzXBQE62jn4lUua7cMdsHRMNHbLmKqBoVL0meObDDjsaJ/RCbOPuruy3FmgvXPp0+Y4zl1GsklDSyjFzg4LBzjAk9Ryvh1O4zvJBkkyfCgurLKCnOKIPy3v5fPMS9oDfO1aarAVGoZZe416pvTW4hb8cdB6kn9XWYDob4NDFX/sP5k7XIhd/NAIn9LrKFg0sLtATaKLX+BcasF1CgDR/u6+SEeQd5QaRF7Go2Nq5Ltuu4OIFONI2qhEeVDDK6Otf2WSWj9KPno2GHuumBfbg4ypWoJgmZrMXk8JeVV/OP/0jIQz3p/7yfF21X1XBEqYaVHPAMKdEYYkCSa46KfACyOt6LfnkuCHtoTOpFo7sq0omIA2HOtpIx1u3vMBUyAbQqT6cokkKB1b6gNTFwhHc+8ybfLFPljJB8cWshI+V/b06S6fekRmvTNxvDykWNsdlkENBYqc9hMfjcT4hO4K+76SWN62mimQYODvFyfTVMC7WkQ3k/XEnmqUPV5XkbaILbS1d/tA57N148FiJ5/QXtI6Y94imubYyVqU=
- secure: AdKSZKA4gMuKXI4X4dQNJqcMv5OmPIHdN8fpy55Y9yoOQPQHZE3Zwc4QDWBh20q298jyEC854tVTPTysdZ7h+2s2FhsprYv1Bt/QNzKIrLpeIMj2quuVGMbdPuk08y55gost94KwVLJv0sIDpRlB/PEQkA7Mg/UDsT9zR8E1Ms5x+ul2C8e1ag0zzNl1wVnT5jY8WCp74uA/XXCcJl/80qT1stUERazCKwbKNo007hi7rdm4HA7YGevORq8e2r67je+WIBZUAwrHT0Zjuo4ibwUii4LdwvjuN3w0Z6e9Wf4x5bBqGgnih0T31uom2yPjNx+U/c2AWI+Nxfy/SEF2U+9bjBEZ3ZhI7F1B9ofXo2mhvvsVDiUrymMBbG2V64C9kAzeUh7xIBTqIrbdtpAEBV9FlLAtF2swVTwtCgZgcVTOt3RKXCi3X3nk3cuH7PAorFa/QGfT4xxVu2011FVAt2Rm7SD0ZWztZTSTz/4Nt/egtGBOJfrCc7oLEygLzDmLqsqCwCROITVQjWLjrtqDyLteaNiSXeNIQMKun3izApbXnHmXB+FV3R3EZocboqk3v5bmPTahnG6Ghc2zknWyyxSx+O9qIfOpHUL8JMJiT82lUQUeibtCn7DCE8wVQ/gYC5i+a+KO/d3NemSzIFlZ8aoUiEPYq18dYlsDXeLXwF0=
android:
components:
- tools
- platform-tools
- tools
- build-tools-$ANDROID_BUILD_TOOLS
- android-$ANDROID
before_install:
- yes | sdkmanager "platforms;android-$ANDROID"
script:
- ./gradlew clean build
after_success:
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
./gradlew uploadArchives -PSONATYPE_USERNAME="${SONATYPE_USERNAME}" -PSONATYPE_PASSWORD="${SONATYPE_PASSWORD}";
fi
notifications:
email:
recipients:
- secure: fOInp4SGBqiIMgnsGceQTa0SuFLaAoxAF15W0crhuljGlqSgnbnBjh0xFEF4P5+q3VT3DgDZs53GVVo6S9gEl8AWJy84KGuUX1M/CQKUQC4bwNXJdHfY3MIy6D50da6UfwWeNS4ienKh2Rj6w2TapN9M8C9nJJZk9aJFc9NWZmWTVboHZd4oUDeeRBJ6KSk1Ay7L/mmxv4cMCXaW7pPJixvUFESKNYgK4KAN3zYpym2UijrQ8zf7OVcYnTorcAuXUZDk8EvwdHl3rIAdlbVqvyZ8rmoQ2Da/Q2VlWUL/HrHUVJtCPZ+T+dNUag4a8joIDqWKwcyk76PElmgft3azb7GERb+bkZz1ToQc2IvuOeUk2SsuXWZugoEQImKWl/yWeirWBLrwzieaVh4j04dMSn/Npc1yL5kjX9EuiM6MFHdYPianMpvhFiaYKihjzW0GPV6sfuY7xS8cA9L9DjAsXoHIXIxc/+hRA+bpPUl+qMaQdGjJmNJJ2VPFnOY0XCsDDQDIVa3nZOA6aXMUG2c4H26RJZPe7uvfRiuL86n3KAmkoXSwne9t8WYMgl89LMsU5XxjBvwz2Qa1HqG09tVs6nhB23easrhEYEf/ZsGg0DIIL1FImUHj+wUUfZXeyFmbiE6lD/i2+3a5DqzZGHbXUDCoUIagObMf8fe2z5+0K/Q=
on_success: always
on_failure: always

102
README.md
View File

@@ -1,38 +1,84 @@
## VTM - Very experimental Tile Map library
[![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](https://search.maven.org/search?q=g:org.mapsforge)
[![Build Status](https://travis-ci.org/mapsforge/vtm.svg?branch=master)](https://travis-ci.org/mapsforge/vtm)
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](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.
http://www.opensciencemap.org
<img src="docs/logo/VTM.svg" style="bottom:0;" width="200" align="right">
### Features
VTM (Vector Tile Map) was developed within the [OpenScienceMap](https://github.com/opensciencemap) project.
**This fork continues VTM development and provides compatibility with latest [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 our public [forum](https://groups.google.com/group/mapsforge-dev) for help.
## Features
- Java map library
- OpenGL vector-tile rendering
- Themeable vector layers
- Support for multiple tile sources: primary opensciencemap (.vtm)
- vector: partially mapbox vector-tile and mapsforge files
- bitmap: any quadtree-scheme tiles as texture
- Backends for Android, Desktop and HTML5/WebGL (through libgdx and GWT)
- Themeable vector layers ([render themes](docs/Rendertheme.md))
- Support for multiple tile sources:
- OpenScienceMap vector tiles
- Mapsforge vector 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))
### Notes
- To set up your own tile server for .vtm tiles see https://github.com/opensciencemap/TileStache/tree/master/TileStache/OSciMap4
- Almost everything is still in early/experimental stage and subject for being rewritten
- pull requests welcome :)
### Projects
- **vtm** core library
- **vtm-android** Android backend
- **vtm-android-example** Android examples
- **vtm-gdx** common libGDX backend
- **vtm-android-gdx** Android libGDX backend
- **vtm-desktop** Desktop libGDX 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
work in progress..
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
## WebGL Demo
[OpenScienceMap](http://opensciencemap.org/s3db/#scale=17,rot=61,tilt=51,lat=53.075,lon=8.807) view of Bremen.
- Hold right mouse button to change view direction.
## 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:
- mapsforge: based on 0.2.4
- osmdroid: some overlay code
- libgdx: AsyncTask, some modfied classes
- android: some Matrix code
- Triangle: stripped down for simple triangulation (through jni)
- **Android** (Apache 2.0): some Matrix code, TimSort (http://source.android.com)
- **libGDX** (Apache 2.0): AsyncTask, MathUtils, Interpolation, PixmapPacker (https://github.com/libgdx)
- **mapsforge** (LGPL3): based on 0.2.4 (https://github.com/mapsforge/mapsforge)
- **osmdroid** (Apache 2.0): some overlay classes (https://github.com/osmdroid/osmdroid)
- **tessellate** (SGI Free Software License B 2.0): (https://github.com/cscheid/tessellate)
## 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 |
| ------------- |
|![Desktop](docs/images/desktop.png)|
| Browser |
| ------------- |
|![Browser](docs/images/browser.png)|

55
build.gradle Normal file
View File

@@ -0,0 +1,55 @@
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
allprojects {
group = 'org.mapsforge'
version = 'master-SNAPSHOT'
ext.isReleaseVersion = !version.endsWith("SNAPSHOT")
ext.androidBuildVersionTools = "28.0.3"
ext.gdxVersion = "1.9.9"
ext.gwtVersion = "2.8.0"
ext.slf4jVersion = "1.7.25"
if (JavaVersion.current().isJava8Compatible()) {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
logging.captureStandardError LogLevel.INFO
logging.captureStandardOutput LogLevel.INFO
}
}
}
static def androidCompileSdk() { return 28 }
// 14 for Support Library, 16 for sqlite-android
static def androidMinSdk() { return 16 }
static def androidTargetSdk() { return 22 }
static def versionCode() { return 1 }
def versionName() { return version }
subprojects {
repositories {
google()
maven { url 'https://repo.boundlessgeo.com/main/' }
jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url 'https://jitpack.io' }
}
tasks.withType(JavaCompile) {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
}

49
config/vtm-pmd.xml Normal file
View 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>

83
deploy.gradle Normal file
View File

@@ -0,0 +1,83 @@
apply plugin: 'signing'
if (project.hasProperty("android")) {
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
} else {
task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
signing {
required { isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: SONATYPE_USERNAME, password: SONATYPE_PASSWORD)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: SONATYPE_USERNAME, password: SONATYPE_PASSWORD)
}
pom.project {
packaging 'jar'
name 'vtm'
description 'OpenGL vector map library written in Java - running on Android, iOS, Desktop and within the browser.'
url 'https://github.com/mapsforge/vtm'
licenses {
license {
name 'GNU Lesser GPL'
url 'http://www.gnu.org/licenses/lgpl.html'
distribution 'repo'
}
}
scm {
connection 'scm:git:https://github.com/mapsforge/vtm'
developerConnection 'scm:git:https://github.com/mapsforge/vtm'
url 'https://github.com/mapsforge/vtm'
}
developers {
developer {
id 'hannes.janetzek'
name 'Hannes Janetzek'
email 'hannes.janetzek@gmail.com'
}
developer {
id 'devemux86'
name 'Emux'
email 'devemux86@gmail.com'
}
}
}
}
}
}

22
docs/Applications.md Normal file
View File

@@ -0,0 +1,22 @@
# 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, Desktop, iOS | Open |
| [Cruiser](http://wiki.openstreetmap.org/wiki/Cruiser) | Map and navigation application | Proprietary/Free | Android, Desktop | Closed |
| [GCDroid](https://play.google.com/store/apps/details?id=com.gcdroid) | Geocaching App | Proprietary/Free and Commercial | Android | Closed |
| [Hunt Cyprus](https://play.google.com/store/apps/developer?id=Talent+S.A.) | Map and navigation application for hunters | Proprietary/Free and Commercial | Android | Closed |
| [Kurviger](https://kurviger.de/en) | Route planner specialized on motorcyclists | Proprietary/Free and Commercial | Android | Closed |
| [MapTrek](http://maptrek.mobi) | Application for outdoor activities | GPL3/Free and Commercial | Android | Open |
| [MyRunningApp](https://play.google.com/store/apps/details?id=it.nimarsolutions.rungpstracker) | Fitness app | Proprietary/Free | Android | Closed |
| [MyTourbook](http://mytourbook.sourceforge.net/mytourbook/) | Visualize and analyze tours | GPL2/Free | Desktop | Open |
| [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 |
| [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 |
| [XCTrack](http://xctrack.org/) | Flight computer for paraglider pilots | Proprietary/Free | Android | Closed |
You know an application that is missing here? Please inform us by sending a message via our public [forum](https://groups.google.com/group/mapsforge-dev).

15
docs/CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,15 @@
## 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 our public [forum](https://groups.google.com/group/mapsforge-dev).
You may also create a new issue on [Github](https://github.com/mapsforge/vtm/issues) or comment on an existing one to describe your ideas. We will then discuss the best way to realize your proposal and figure out how we can help you to get started quickly.
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.

194
docs/Changelog.md Normal file
View File

@@ -0,0 +1,194 @@
# Changelog
## Version 0.11.1 (2019-04-12)
- MBTiles raster tile source (Android) [#708](https://github.com/mapsforge/vtm/pull/708)
- Fix Android 4.2 crash [#713](https://github.com/mapsforge/vtm/issues/713)
- Many other minor improvements and bug fixes
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.11.1)
## Version 0.11.0 (2019-03-25)
- Render themes: tag transform [#420](https://github.com/mapsforge/vtm/issues/420)
- Render themes: PNG scaling [#595](https://github.com/mapsforge/vtm/issues/595)
- Building shadows [#575](https://github.com/mapsforge/vtm/issues/575)
- Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401)
- PathLayer(s) scaled width [#594](https://github.com/mapsforge/vtm/issues/594)
- Mapilion MVT vector tiles & Hillshading [#614](https://github.com/mapsforge/vtm/issues/614)
- Overpass tile source [#663](https://github.com/mapsforge/vtm/issues/663)
- vtm-gdx-poi3d module [#600](https://github.com/mapsforge/vtm/pull/600)
- vtm-models module [#580](https://github.com/mapsforge/vtm/issues/580)
- `ViewController` refactor [#625](https://github.com/mapsforge/vtm/pull/625)
- `getMapViewCenter`, `setMapViewCenter` with pivotX, pivotY
- `ThemeCallback.getColor` refactor [#274](https://github.com/mapsforge/vtm/issues/274)
- Enable physical fling and fling on rotation / scale
- `Parameters.ANIMATOR2`
- Enable optimal placement of labels or symbols on polygons
- `Parameters.POLY_LABEL`
- Enable placement of symbols on polygons
- `Parameters.POLY_SYMBOL`
- OpenGL ES 3.0 support [#646](https://github.com/mapsforge/vtm/issues/646)
- OpenGL ES 2.0 complete [#642](https://github.com/mapsforge/vtm/pull/642)
- libGDX 1.9.9 [#635](https://github.com/mapsforge/vtm/issues/635)
- Many other minor improvements and bug fixes
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.11.0)
## Version 0.10.0 (2018-08-28)
- Map overzoom [#393](https://github.com/mapsforge/vtm/issues/393)
- Buildings overzoom [#503](https://github.com/mapsforge/vtm/issues/503)
- Labels / symbols overzoom [#544](https://github.com/mapsforge/vtm/pull/544)
- S3DB layer [#475](https://github.com/mapsforge/vtm/pull/475)
- vtm-mvt module with MVT tile decoder [#481](https://github.com/mapsforge/vtm/pull/481)
- Nextzen MVT / GeoJSON vector tiles [#498](https://github.com/mapsforge/vtm/issues/498)
- OpenMapTiles MVT vector tiles [#482](https://github.com/mapsforge/vtm/issues/482)
- Location texture renderer [#547](https://github.com/mapsforge/vtm/issues/547)
- Render themes: symbols on lines [#495](https://github.com/mapsforge/vtm/issues/495)
- Render themes: styles improvements [#479](https://github.com/mapsforge/vtm/pull/479)
- Internal render themes improvements [#488](https://github.com/mapsforge/vtm/pull/488)
- Map view roll [#474](https://github.com/mapsforge/vtm/pull/474)
- Physical fling and fling on rotation / scale [#497](https://github.com/mapsforge/vtm/pull/497) [#499](https://github.com/mapsforge/vtm/pull/499)
- `Parameters.ANIMATOR2`
- Scale factor for short vertices calculation [#537](https://github.com/mapsforge/vtm/issues/537)
- `Parameters.CUSTOM_COORD_SCALE`
- Polygon symbols default disabled [#405](https://github.com/mapsforge/vtm/issues/405)
- `Parameters.POLY_SYMBOL`
- Map fractional zoom [#487](https://github.com/mapsforge/vtm/issues/487)
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
- Fix layers synchronization [#507](https://github.com/mapsforge/vtm/issues/507)
- Fix Mapsforge clipping on small zooms [#264](https://github.com/mapsforge/vtm/issues/264)
- Fix PathLayer (vtm) reverse segments [#220](https://github.com/mapsforge/vtm/issues/220)
- Fix FadeStep alpha interpolation [#486](https://github.com/mapsforge/vtm/issues/486)
- Fix libGDX flickering [#148](https://github.com/mapsforge/vtm/issues/148) [#149](https://github.com/mapsforge/vtm/issues/149)
- ViewController refactor [#523](https://github.com/mapsforge/vtm/pull/523)
- `ViewController.setScreenSize` renamed to `setViewSize`
- `ViewController.setMapScreenCenter` renamed to `setMapViewCenter`
- Android 9 compatibility [#550](https://github.com/mapsforge/vtm/issues/550)
- JTS (LocationTech) [#484](https://github.com/mapsforge/vtm/issues/484)
- SVG Salamander (JitPack) [#560](https://github.com/mapsforge/vtm/issues/560)
- Many other minor improvements and bug fixes
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.10.0)
## Version 0.9.2 (2018-01-04)
- 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)
- Many other 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)
- Many other 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)
- Many other 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)
- Many other 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 revive
- 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)
- Layer groups [#99](https://github.com/mapsforge/vtm/issues/99) [#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)
- 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)
- Many other minor improvements and bug fixes
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.6.0)

5
docs/ISSUE_TEMPLATE.md Normal file
View File

@@ -0,0 +1,5 @@
For questions or discussion please always use our Forum first and make sure you read our Contributing Guide.
- Forum: https://groups.google.com/group/mapsforge-dev
- Contributing Guide: https://github.com/mapsforge/vtm/blob/master/docs/CONTRIBUTING.md

169
docs/Integration.md Normal file
View File

@@ -0,0 +1,169 @@
# Integration guide
This article describes how to integrate the library in your project, with Gradle / Maven / Jars or SNAPSHOT builds.
Current version is [![Maven Central](https://img.shields.io/maven-central/v/org.mapsforge/vtm.svg)](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.25'
```
### Android
```groovy
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
implementation 'com.caverock:androidsvg:1.3'
```
### Android (libGDX)
```groovy
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-armeabi-v7a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86'
implementation 'org.mapsforge:vtm-android:[CURRENT-VERSION]:natives-x86_64'
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-armeabi-v7a'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-arm64-v8a'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86'
implementation 'org.mapsforge:vtm-android-gdx:[CURRENT-VERSION]:natives-x86_64'
implementation 'com.badlogicgames.gdx:gdx:1.9.9'
implementation 'com.badlogicgames.gdx:gdx-backend-android:1.9.9'
implementation 'com.caverock:androidsvg:1.3'
```
### iOS
Detailed iOS instructions can be found [here](ios.md).
### Desktop
```groovy
repositories {
maven { url 'https://jitpack.io' }
}
implementation 'org.mapsforge:vtm-gdx:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]'
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-linux'
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-osx'
implementation 'org.mapsforge:vtm-desktop:[CURRENT-VERSION]:natives-windows'
implementation 'com.badlogicgames.gdx:gdx:1.9.9'
implementation 'com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop'
implementation 'com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.9'
implementation 'org.lwjgl.lwjgl:lwjgl:2.9.3'
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-linux'
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-osx'
implementation 'org.lwjgl.lwjgl:lwjgl-platform:2.9.3:natives-windows'
implementation 'com.github.blackears:svgSalamander:v1.1.1'
```
### JTS geometries
```groovy
implementation 'org.mapsforge:vtm-jts:[CURRENT-VERSION]'
implementation 'org.locationtech.jts:jts-core:1.15.0'
```
### Online tiles
```groovy
implementation 'org.mapsforge:vtm-http:[CURRENT-VERSION]'
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.squareup.okio:okio:1.13.0'
```
### Mapbox vector tiles
```groovy
implementation 'org.mapsforge:vtm-mvt:[CURRENT-VERSION]'
implementation 'com.google.protobuf:protobuf-java:3.5.1'
implementation 'com.wdtinc:mapbox-vector-tile:3.0.0'
implementation 'org.locationtech.jts:jts-core:1.15.0'
```
### GeoJSON vector tiles
```groovy
implementation 'org.mapsforge:vtm-json:[CURRENT-VERSION]'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.8.4'
implementation 'com.fasterxml.jackson.core:jackson-core:2.8.4'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.4'
```
### jeo (indoor maps)
Add _first_ the Boundless repository:
```groovy
repositories {
maven { url 'https://repo.boundlessgeo.com/main/' }
jcenter()
...
}
```
```groovy
implementation 'org.mapsforge:vtm-jeo:[CURRENT-VERSION]'
implementation('org.jeo:jeo:0-SNAPSHOT') {
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
}
implementation('org.jeo:jeo-carto:0-SNAPSHOT') {
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
}
implementation('org.jeo:jeo-render:0-SNAPSHOT') {
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
}
implementation 'org.osgeo:proj4j:0.1.0:jeo'
implementation 'com.metaweb:lessen:1.0'
implementation 'com.vividsolutions:jts:1.13'
```
## Snapshots
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
View File

@@ -0,0 +1,11 @@
# Mapsforge map providers (in lexical order)
- [AndroidMaps](http://www.androidmaps.co.uk/)
- [Freizeitkarte](http://www.freizeitkarte-osm.de/android/en/index.html)
- [Kurviger](https://offline-maps.kurviger.de/)
- [Locusvectormaps](http://www.locusvectormaps.com)
- [Mapsforge](http://download.mapsforge.org/)
- [OpenAndroMaps](http://www.openandromaps.org/en/)
- [OpenMaps](http://openmaps.eu/)
You know a Mapsforge map provider that is missing here? Please inform us by sending a message via our public [forum](https://groups.google.com/group/mapsforge-dev).

279
docs/Rendertheme.md Normal file
View File

@@ -0,0 +1,279 @@
# RenderTheme
**This article describes how to use XML-based render-themes to style maps.**
If you have any questions or problems, don't hesitate to ask our public [forum](https://groups.google.com/group/mapsforge-dev) for help. You can also report bugs and improvement requests via our [issue tracker](https://github.com/mapsforge/vtm/issues).
## Introduction
A render-theme is an XML file which contains rules and rendering instructions. Such files can be used to customize the visual style of the rendered map. The vtm map library comes with built-in render-themes similar to the [Osmarender](http://wiki.openstreetmap.org/wiki/Osmarender) style. External render-theme files are also supported and can be activated via the `map.setTheme(ThemeLoader.load(File))` method at runtime.
Syntax and semantics of render-theme files are similar but not identical to [Osmarender rules](http://wiki.openstreetmap.org/wiki/Osmarender/Rules). A formal render-theme description exists as an *XML schema document*, it can be found in the [repository](https://github.com/mapsforge/vtm/blob/master/resources/rendertheme.xsd).
It is always recommended to study the [default](https://github.com/mapsforge/vtm/blob/master/vtm-themes/resources/assets/vtm/default.xml) built-in render theme.
## Rules
A rule element `<m/>` (_match_) has several attributes to specify which map elements the rule matches. Non of them is required.
|**Attribute**|**Valid values**|**Description**|**Default**|
|-------------|----------------|---------------|------------|
|e|<ul><li>node</li><li>way</li><li>any</li></ul>|Defines which map element type will be matched.|*any*|
|k|[string](http://www.w3.org/TR/xmlschema-2/#string)|The key of the tile source tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple keys.</li>|any key|
|v|[string](http://www.w3.org/TR/xmlschema-2/#string)|The value of the tile source tag. <ul><li>A vertical bar "`\|`" can be used to specify multiple values.</li><li>A minus sign "`-`" excludes the other values after "`\|`". It never works alone.</li><li>A tilde "`~`" matches if the map element does not have a tag with the specified key.</li>|any value|
|closed|<ul><li>yes</li><li>no</li><li>any</li></ul>|Defines which ways will be matched. A way is considered as closed if its first node and its last node are equal.|*any*|
|select|<ul><li>first</li><li>when-matched</li><li>any</li></ul>|<ul><li>Only add the first matching sub-rule in this rule section (the others are ignored)</li><li>Select all matches of the enclosing rule section</li><li>Select all (whether it was matched or not)</li></ul>|*any*|
|zoom-min|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The minimum zoom level on which the rule will be matched.|*0*|
|zoom-max|[unsigned byte](http://www.w3.org/TR/xmlschema-2/#unsignedByte)|The maximum zoom level on which the rule will be matched.|*127*|
Rules can be nested to any level of depth. This can be used to define rendering instructions which depend on multiple rules. It may also be used to structure complex declarations and to avoid redundancy:
```xml
<m e="way" closed="no">
<m k="highway" v="motorway">
<m k="tunnel" v="true|yes">
</m>
<m k="tunnel" v="~|no|false">
</m>
</m>
</m>
```
Here is an example how to use the `select` attribute. The symbol is shown. The **bold** caption isn't visible cause only the first matched sub-rule is considered. The _italic_ caption is displayed as it was selected by the first sub-rule.
```xml
<m k="railway" v="halt|tram_stop" zoom-min="15" select="first">
<m v="tram_stop">
<symbol src="assets:symbols/transport/tram_stop.svg" />
</m>
<m v="tram_stop">
<caption style="bold" dy="20" fill="#af3a3a" k="name" size="12"/>
</m>
<m select="when-matched">
<caption style="italic" dy="-20" fill="#222222" k="name" size="12"/>
</m>
</m>
```
## Rendering Instructions
A rendering instruction specifies how a map element is drawn. Each rule element might include any number of rendering instructions. Except for labels and symbols, all rendering instructions are drawn on the map in the order of their definition.
At the moment, the following rendering instructions are available:
- `area`
- `caption`
- `circle`
- `line`
- `outline`
- `lineSymbol`
- `text`
- `extrusion`
- `symbol`
## Header Elements
The following header elements can be used:
- `map-background`: a color value to set the color of a blank tile. This should not be used to set the color of the sea or land. Default is `#FFFFFF`.
- `base-stroke-width`: set the basic width of strokes. Default is `1`.
- `base-text-scale`: set the overall text scale. Default is `1`.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<rendertheme xmlns="http://opensciencemap.org/rendertheme" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd" version="1" map-background="#FFFCFA">
</rendertheme>
```
## Texts and Captions
The most common attributes for textual styling:
|**Attribute**|**Valid values**|**Description**|**Default**|
|-------------|----------------|---------------|-----------|
|font-family|*default*, *default_bold*, *monospace*, *sans_serif*, *serif*, *thin*, *light*, *medium*, *black*, *condensed*|Set font family|*default*|
|style|*bold*, *bold_italic*, *italic*, *normal*|Set font style|*normal*|
|size|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set font size|*0*|
|fill|[color](https://www.w3.org/TR/css-color-4)|Set fill color|*#000000*|
|stroke|[color](https://www.w3.org/TR/css-color-4)|Set stroke color|*#000000*|
|stroke-width|non negative [float](https://www.w3.org/TR/xmlschema-2/#float)|Set stroke width|*0*|
|dy|[float](https://www.w3.org/TR/xmlschema-2/#float)|Offset in vertical direction|*0*|
## Styles
There are different possibilities to simplify and accelerate map styling or changing styles.
### Style patterns
If you want to use a specific style multiple times you not have to rewrite it for each text, area, or line rule.
If you define a style set an `id` and use it with `use` in your rendering instructions:
- `style-text`
- `style-line`
- `style-area`
This example styles all areas with the_residential_ style, which haven't the `highway` or `building` key.
```xml
<style-area fade="11" fill="#e8e7e3" id="residential" />
<m closed="yes" e="way" k="highway|building" v="~">
<m v="residential|commercial|retail|farmyard">
<area use="residential" />
</m>
</m>
```
### Stylemenus
The **stylemenu** allows you to selectively turn rules on and off, in effect defining multiple layers in a map that can be controlled individually.
To make use of style menus, you will first need to group the elements of your map into categories by attaching a **cat** element to them.
```xml
<m cat="areas" e="way" k="landuse" v="landfill|quarry" zoom-min="14">
```
The same cat tag can be given to as many elements as you like, but each element can only have one cat tag.
However, this does not limit your ability to group elements, as in the style definitions, multiple categories can be combined into one layer.
You can think about the cat tag as a switch that switches all elements in the rendertheme below it either on or off. If a category is turned off, all elements below it become invisible. If a category is turned on, all elements below become visible (unless they are themselves controlled via a category which is turned off).
Layers are combinations of categories that can be toggled on and off together and other layers (via **overlay**) that can be toggled on and off individually. In general, categories are not visible to a map user, but layers are. To make layers more user friendly, they can be named with the name tag in various languages.
```xml
<layer id="public_transport" visible="true">
<name lang="de" value="Öffentlicher Verkehr"/>
<name lang="en" value="Public Transport"/>
<name lang="es" value="Transporte público"/>
<name lang="fr" value="Transport public"/>
<cat id="public_transport"/>
<cat id="rail"/>
</layer>
```
A set of layer definitions makes up a style:
```xml
<stylemenu id="r4menu" defaultvalue="terrain" defaultlang="en">
<layer id="shopping" visible="true">
<name lang="de" value="Shopping"/>
<name lang="en" value="Shopping"/>
<name lang="es" value="Tiendas"/>
<name lang="fr" value="Shopping"/>
<cat id="shopping"/>
</layer>
<layer id="terrain" visible="true">
<name lang="de" value="Topographischer Hintergrund"/>
<name lang="en" value="Topographic Colours"/>
<name lang="es" value="Colores topográficos"/>
<name lang="fr" value="Couleurs topographiques"/>
<cat id="topo"/>
</layer>
</stylemenu>
```
The **visible** attribute is meant to indicate which of the layers are visible in the user interface. Layers where visible is set to false should not be seen by a user, and are thus useful to build base-layers of common categories from which then user-visible layers can be inherited, like this:
```xml
<layer id="base">
<cat id="roads"/>
<cat id="waterbodies"/>
<cat id="landuse"/>
<cat id="places"/>
<overlay id="emergency"/>
<overlay id="food"/>
</layer>
<layer id="simple" parent="base" visible="true">
<name lang="de" value="Auto"/>
<name lang="en" value="Driving"/>
<name lang="es" value="Conducción"/>
<name lang="fr" value="Conduite"/>
<cat id="transport"/>
<cat id="barrier"/>
<cat id="driving"/>
<overlay id="parking"/>
<overlay id="shopping"/>
</layer>
<layer id="standard" parent="base" visible="true">
<name lang="de" value="Stadt"/>
<name lang="en" value="City"/>
<name lang="es" value="City"/>
<name lang="fr" value="Ville"/>
<cat id="areas"/>
<overlay id="tourism"/>
<overlay id="sports"/>
<overlay id="amenities"/>
<overlay id="buildings"/>
<overlay id="public_transport"/>
<overlay id="accommodation"/>
<overlay id="shopping"/>
</layer>
```
To turn layers on by default, add the **enabled=true** attribute. In this case, buildings should be by default visible, while parking related elements not:
```xml
<layer id="parking">
<name lang="de" value="Parkplätze"/>
<name lang="en" value="Parking"/>
<name lang="es" value="Aparcamiento"/>
<name lang="fr" value="Parking"/>
<cat id="parking"/>
</layer>
<layer enabled="true" id="buildings">
<name lang="de" value="Gebäude"/>
<name lang="en" value="Buildings"/>
<name lang="es" value="Edificios"/>
<name lang="fr" value="Bâtiments"/>
<cat id="buildings"/>
</layer>
```
#### Map Integration
The [Playground](https://github.com/mapsforge/vtm/blob/master/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java) and [Android](https://github.com/mapsforge/vtm/blob/master/vtm-android-example/src/org/oscim/android/test/MapsforgeStyleActivity.java) Samples app have a completely worked style menu.
When a rendertheme is parsed, the style menu definitons are parsed and a callback is made into the application giving it access to the stylemenu definitions.
On Android, the stylemenus can thus be converted into standard Android settings, providing a seamless integration of the rendertheme definitions that do not require changes every time the rendertheme changes. There is an example on how to do this in the Samples app of Mapsforge, see the [Settings.java](https://github.com/mapsforge/mapsforge/blob/master/mapsforge-samples-android/src/main/java/org/mapsforge/samples/android/Settings.java) file in Mapsforge repository.
## Priorities
Labels and icons are drawn in order of priority. The default (and highest) priority is 0, so anything with a priority higher than 0 will only be drawn if the space is not yet taken up or has a lower priority value than its colliding elements.
_VTM priorities have the opposite meaning to the Mapsforge render-theme priorities._
```xml
<m e="node" k="place" v="town" zoom-min="8">
<caption priority="2" k="name" style="bold" size="14" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
</m>
<m e="node" k="place" v="city" zoom-min="6" zoom-max="6">
<caption priority="0" k="name" style="bold" size="11" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
</m>
```
## Symbols
Symbols can be either defined in the raster PNG format or as vector graphics in SVG format. VTM uses libraries for [Android](https://github.com/BigBadaboom/androidsvg) and [Java](https://github.com/blackears/svgSalamander) that support a large subset of the [Tiny SVG](http://www.w3.org/TR/SVGTiny12/index.html) specification.
### SVG Scaling
SVG resources can be automatically scaled to accommodate different device resolutions.
The options available are:
- If no size is given, a svg is rendered to a 20x20px multiplied by the device scale factor and any user adjustments.
- symbol-percent: the svg is rendered as a percentage size of its default size. This is the best way to make certain svg smaller or bigger than others.
- symbol-width and/or symbol-height: additional parameters give the absolute pixel size for the symbol, again adjusted by the scale factors. If only one dimension is set, the other is calculated from aspect ratio.
### SVG Icon Design
If you want to know how to design your own icons, you can have a look at Google's [Material Design](https://material.io/design/iconography/system-icons.html) conventions.
To keep SVG sizes down, it is advisable to make use of the reuse facilities within SVG files and to remove any unneccessary comments and metadata.

17
docs/desktop.md Normal file
View File

@@ -0,0 +1,17 @@
### Desktop
To run the desktop samples can use the Gradle `run` task.
e.g. for `vtm-playground` can change the [mainClassName](../vtm-playground/build.gradle) to run each sample and pass args:
```groovy
./gradlew :vtm-playground:run -Pargs=/path/to/map
```
To create a standalone executable jar, adapt the main class in [build gradle](../vtm-playground/build.gradle), then run:
```groovy
./gradlew :vtm-playground:fatJar
```
The jar file can be found in `build/libs` folder. Depending on the main class, pass args on execution via command line:
```
java -jar vtm-playground-master-SNAPSHOT-jar-with-dependencies.jar /path/to/map
```

BIN
docs/images/android.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

BIN
docs/images/browser.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
docs/images/ios.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

64
docs/ios.md Normal file
View 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
View 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
View 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
View 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
View 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**.

View File

@@ -2,18 +2,18 @@
<profiles 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.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.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_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.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_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.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.comment.new_lines_at_block_boundaries" value="false"/>
<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.insert_space_after_opening_paren_in_while" value="do not insert"/>
<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_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.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_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_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.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.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.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_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.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.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_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.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.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.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.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.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_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_unary_operator" value="do not 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_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.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.lineSplit" value="100"/>
<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.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_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="80"/>
<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_semicolon_in_try_resources" value="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.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.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_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_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"/>
@@ -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_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_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_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_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.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.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.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.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.brace_position_for_method_declaration" value="end_of_line"/>
<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.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_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_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_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.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_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_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_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.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.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_before_assignment_operator" value="insert"/>
<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_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_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.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.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.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_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.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_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.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_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.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_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.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.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.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_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.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.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_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"/>
@@ -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.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.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.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.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>

View File

@@ -1,22 +1,22 @@
eclipse.preferences.version=1
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.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.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=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.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_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_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=82
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=82
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=82
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_compact_if=16
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_method_declaration=16
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_superinterfaces_in_enum_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_switch=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_javadoc_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=false
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_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_for_parameter=do not insert
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.preserve_white_space_between_code_and_line_comments=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_empty_lines_to_preserve=1
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.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_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

13
gradle.properties Normal file
View File

@@ -0,0 +1,13 @@
# 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=-Xmx1536m
# 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

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

172
gradlew vendored Executable file
View File

@@ -0,0 +1,172 @@
#!/usr/bin/env sh
##############################################################################
##
## 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=""
# 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, switch paths to Windows format before running java
if $cygwin ; 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=$((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"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

84
gradlew.bat vendored Normal file
View File

@@ -0,0 +1,84 @@
@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 Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
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 init
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
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
: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 %CMD_LINE_ARGS%
: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
View 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="&quot;${workspace_loc:/vtm-jni}&quot;"/>
</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
View 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
View File

@@ -0,0 +1,9 @@
apply plugin: 'java-library'
dependencies {
api "com.badlogicgames.gdx:gdx-jnigen:$gdxVersion"
}
sourceSets {
main.java.srcDirs = ['src']
}

3
jni/cp.sh Executable file
View 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
View 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
View File

@@ -0,0 +1,2 @@
APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-8

View File

@@ -1,33 +1,33 @@
<project name="android-natives" basedir="." default="postcompile">
<property environment="env" />
<!-- the suffix ndk-build executable -->
<property name="ndkSuffix" value="" />
<target name="clean" depends="check-for-ndk" if="has-ndk-build">
<exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true">
<arg value="clean"/>
</exec>
</target>
<target name="precompile" depends="check-for-ndk">
</target>
<target name="compile-natives" depends="precompile" if="has-ndk-build">
<echo>ndk_home: ${env.NDK_HOME}</echo>
<exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true"/>
</target>
<target name="postcompile" depends="compile-natives">
</target>
<target name="check-for-ndk">
<condition property="ndk-build-found">
<available file="ndk-build${ndkSuffix}" filepath="${env.NDK_HOME}"/>
</condition>
<condition property="has-ndk-build">
<equals arg1="${ndk-build-found}" arg2="true"/>
</condition>
</target>
</project>
<project name="android-natives" basedir="." default="postcompile">
<property environment="env" />
<!-- the suffix ndk-build executable -->
<property name="ndkSuffix" value="" />
<target name="clean" depends="check-for-ndk" if="has-ndk-build">
<exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true">
<arg value="clean"/>
</exec>
</target>
<target name="precompile" depends="check-for-ndk">
</target>
<target name="compile-natives" depends="precompile" if="has-ndk-build">
<echo>ndk_home: ${env.NDK_HOME}</echo>
<exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true"/>
</target>
<target name="postcompile" depends="compile-natives">
</target>
<target name="check-for-ndk">
<condition property="ndk-build-found">
<available file="ndk-build${ndkSuffix}" filepath="${env.NDK_HOME}"/>
</condition>
<condition property="has-ndk-build">
<equals arg1="${ndk-build-found}" arg2="true"/>
</condition>
</target>
</project>

View File

@@ -1,147 +1,153 @@
<project name="vtm-jni-Linux-64" basedir="." default="postcompile">
<!-- include the environment -->
<property environment="env"/>
<!-- output directory for temporary object files -->
<property name="buildDir" value="target/linux64" />
<!-- output directory for the shared library -->
<property name="libsDir" value="../libs/linux64" />
<!-- the name of the shared library -->
<property name="libName" value="libvtm-jni64.so"/>
<!-- the jni header jniPlatform to use -->
<property name="jniPlatform" value="linux"/>
<!-- the compilerPrefix for the C & C++ compilers -->
<property name="compilerPrefix" value=""/>
<!-- the compilerSuffix for the C & C++ compilers -->
<property name="compilerSuffix" value="" />
<!-- define gcc compiler, options and files to compile -->
<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"/>
<fileset id="gcc-files" dir="./">
<exclude name="target/"/>
<project name="vtm-jni-Linux-64" basedir="." default="postcompile">
<!-- include the environment -->
<property environment="env"/>
<!-- output directory for temporary object files -->
<property name="buildDir" value="target/linux64" />
<!-- output directory for the shared library -->
<property name="libsDir" value="../libs/linux64" />
<!-- the name of the shared library -->
<property name="libName" value="libvtm-jni64.so"/>
<!-- the jni header jniPlatform to use -->
<property name="jniPlatform" value="linux"/>
<!-- the compilerPrefix for the C & C++ compilers -->
<property name="compilerPrefix" value=""/>
<!-- the compilerSuffix for the C & C++ compilers -->
<property name="compilerSuffix" value="" />
<!-- define gcc compiler, options and files to compile -->
<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 -ffast-math -DNDEBUG"/>
<fileset id="gcc-files" dir="./">
<exclude name="target/"/>
<include name="memcpy_wrap.c"/>
<include name="gl/utils.c"/>
<include name="triangle/TriangleJni.c"/>
<include name="triangle/triangle.c"/>
<include name="triangle/triangle_dbg.c"/>
</fileset>
<!-- define g++ compiler, options and files to compile -->
<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"/>
<fileset id="g++-files" dir="./">
<exclude name="target/"/>
<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}g++${compilerSuffix}"/>
<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="./">
<exclude name="target/"/>
<include name="**/*.cpp"/>
</fileset>
<!-- define linker and options -->
<property name="linker" value="${compilerPrefix}g++${compilerSuffix}"/>
<property name="linker-opts" value="-shared -m64 -Wl,-wrap,memcpy"/>
<property name="libraries" value=""/>
<!-- 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="**/*" excludes="**/.svn"/>
</delete>
</target>
<target name="precompile">
<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>
</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."/>
</fileset>
<!-- define linker and options -->
<property name="linker" value="${compilerPrefix}g++${compilerSuffix}"/>
<property name="linker-opts" value="-shared -m64 -Wl,-wrap,memcpy"/>
<property name="libraries" value=""/>
<!-- 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="**/*" excludes="**/.svn"/>
</delete>
</target>
<target name="precompile">
<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>
</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."/>
<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="-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."/>
<srcfile/>
<arg value="-o"/>
<targetfile/>
<fileset refid="gcc-files"/>
<compositemapper>
<arg value="-Ilibtess2/Include"/>
<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>
<target name="postcompile" depends="link">
</target>
</project>
<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>
<target name="postcompile" depends="link">
</target>
</project>

View File

@@ -1,20 +1,29 @@
<project name="vtm-jni-natives" basedir="." default="all">
<target name="clean">
<ant antfile="build-linux64.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 name="compile-natives">
<ant antfile="build-linux64.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 name="pack-natives">
<jar destfile="../libs/vtm-jni-natives.jar">
<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>
</target>

View File

@@ -3,10 +3,15 @@
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <alloca.h>
#include <math.h>
#include <stdint.h>
#ifndef __WIN32__
#include <alloca.h>
//#else
//#define alloca(size) __builtin_alloca(size)
#endif
//#ifndef uintptr_t
//typedef unsigned long uintptr_t;
//#endif
@@ -72,7 +77,7 @@ void JNI(setColorBlend)(JNIEnv *env, jclass* clazz, jint location, jint c1, jint
#endif // 0
#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 MAT_SIZE 16 * sizeof(float)
@@ -92,6 +97,9 @@ transposeM(float* mTrans, int mTransOffset, float* m, int mOffset);
static inline void
matrix4_proj(float* mat, float* vec);
static inline void
matrix4_proj2D(float* mat, float* vec, float *out);
jlong JNI(alloc)(JNIEnv *env, jclass* clazz)
{
return (long) calloc(16, sizeof(float));
@@ -239,16 +247,59 @@ void JNI(strans)(JNIEnv* env, jclass* clazz, jlong ptr_r, jlong ptr_a)
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* 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);
}
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);
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[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;
}

View 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
View 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_ */

View 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

File diff suppressed because it is too large Load Diff

View 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_ */

View 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_ */

View 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_ */

View 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_ */

View 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

Submodule jni/jni/libtess2 added at a43504d78a

18
jni/jni/memcpy_wrap.c Normal file
View 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

View 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 (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);
}
}
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);
}

View 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
View 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");
}
}

View 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
View 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

View 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;
}

View File

@@ -7,22 +7,25 @@ void run_example(const double vertices_array[],
int contours_size)
{
double *coordinates_out;
int *tris_out;
int nverts, ntris, i;
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,
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");
for (i=0; i<3 * ntris; ++i) {
fprintf(stdout, "%d ", tris_out[i]);
for (i=0; i< ntris; i += 1) {
fprintf(stdout, "%d %d %d\n", tris_out[i*3], tris_out[i*3+1], tris_out[i*3+2]);
}
fprintf(stdout, "\n");
free(coordinates_out);
@@ -30,15 +33,23 @@ void run_example(const double vertices_array[],
free(tris_out);
}
int main()
{
double a1[] = { 0, 0, 1, 5, 2, 0, -1, 3, 3, 3 };
const double *c1[] = {a1, a1+10};
int s1 = 2;
int main() {
double a1[] = {
0, 0,
1, 0,
1, 1,
0, 1,
};
const double *c1[] = {a1, a1 + 8};
run_example(a1, c1, 2);
printf("\n");
double a2[] = { 0, 0, 3, 0, 3, 3, 0, 3,
1, 1, 2, 1, 2, 2, 1, 2 };
const double *c2[] = {a2, a2+8, a2+16};
int s2 = 3;
run_example(a2, c2, s2);

276
jni/tessellate/normal.c Normal file
View 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
View 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
View 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);
}

View File

@@ -1,42 +1,12 @@
#include <jni.h>
#include <string.h>
#include "glu.h"
#include "tess.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef __ANDROID__
#include <android/log.h>
#endif
#include "tessellate.h"
#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);
@@ -54,6 +24,7 @@ TessContext *new_tess_context()
result->v_prev = NULL;
result->vertex_cb = &skip_vertex;
result->odd_even_strip = 0;
result->reversed = 0;
return result;
}
@@ -167,7 +138,7 @@ void begin(GLenum which, void *poly_data)
ctx->vertex_cb = &fan_vertex;
break;
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;
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(
float **verts,
int *nverts,
int **tris,
int *ntris,
const float **contoursbegin,
const float **contoursend)
@@ -229,6 +229,7 @@ TessContext *tessellate(
gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (GLvoid (*)()) &combine);
gluTessBeginPolygon(tess, ctx);
do {
contourbegin = *contoursbegin++;
contourend = *contoursbegin;
@@ -242,141 +243,66 @@ TessContext *tessellate(
} while (contoursbegin != (contoursend - 1));
gluTessEndPolygon(tess);
//write_output(ctx, verts, tris, nverts, ntris);
//destroy_tess_context(ctx);
#ifdef TEST
write_output(ctx, verts, tris, nverts, ntris);
destroy_tess_context(ctx);
#else
gluDeleteTess(tess);
#endif
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
#define CAST_CTX(x) (TessContext *)(uintptr_t) x
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);
return 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;
}

View 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);

354
resources/rendertheme.xsd Normal file
View File

@@ -0,0 +1,354 @@
<?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="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="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="src" type="tns:src" use="required" />
<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="repeat" default="false" type="xs:boolean" use="optional" />
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional" />
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional" />
</xs:complexType>
<xs:complexType 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-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>

25
settings.gradle Normal file
View File

@@ -0,0 +1,25 @@
rootProject.name = 'vtm-parent'
include ':vtm'
include ':vtm-android'
include ':vtm-android-example'
include ':vtm-android-gdx'
include ':vtm-app'
include ':vtm-desktop'
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'

View File

@@ -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>

View File

@@ -1,2 +0,0 @@
bin/*
gen/*

View File

@@ -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>

View File

@@ -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

View File

@@ -1,3 +0,0 @@
#Sat Dec 17 10:00:00 CET 2011
eclipse.preferences.version=1
encoding/<project>=UTF-8

Some files were not shown because too many files have changed in this diff Show More