Deploying to gh-pages from @ maplibre/maplibre-rs@f7d0587a2b 🚀
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
book
|
||||
9
book.toml
Normal file
@ -0,0 +1,9 @@
|
||||
[book]
|
||||
authors = ["Maximilian Ammann"]
|
||||
language = "en"
|
||||
multilingual = false
|
||||
src = "src"
|
||||
title = "MapLibre Rust Documentation"
|
||||
|
||||
[output.html]
|
||||
additional-css = ["diff.css"]
|
||||
372
diff.css
Normal file
@ -0,0 +1,372 @@
|
||||
|
||||
.d2h-d-none {
|
||||
display: none
|
||||
}
|
||||
|
||||
.d2h-wrapper {
|
||||
text-align: left
|
||||
}
|
||||
|
||||
.d2h-file-header {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #d8d8d8;
|
||||
font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif;
|
||||
height: 35px;
|
||||
padding: 5px 10px
|
||||
}
|
||||
|
||||
.d2h-file-header, .d2h-file-stats {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex
|
||||
}
|
||||
|
||||
.d2h-file-stats {
|
||||
font-size: 14px;
|
||||
margin-left: auto
|
||||
}
|
||||
|
||||
.d2h-lines-added {
|
||||
border: 1px solid #b4e2b4;
|
||||
border-radius: 5px 0 0 5px;
|
||||
color: #399839;
|
||||
padding: 2px;
|
||||
text-align: right;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.d2h-lines-deleted {
|
||||
border: 1px solid #e9aeae;
|
||||
border-radius: 0 5px 5px 0;
|
||||
color: #c33;
|
||||
margin-left: 1px;
|
||||
padding: 2px;
|
||||
text-align: left;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.d2h-file-name-wrapper {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 15px;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.d2h-file-name {
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap
|
||||
}
|
||||
|
||||
.d2h-file-wrapper {
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 3px;
|
||||
margin-bottom: 1em
|
||||
}
|
||||
|
||||
.d2h-file-collapse {
|
||||
-webkit-box-pack: end;
|
||||
-ms-flex-pack: end;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 12px;
|
||||
justify-content: flex-end;
|
||||
padding: 4px 8px
|
||||
}
|
||||
|
||||
.d2h-file-collapse.d2h-selected {
|
||||
background-color: #c8e1ff
|
||||
}
|
||||
|
||||
.d2h-file-collapse-input {
|
||||
margin: 0 4px 0 0
|
||||
}
|
||||
|
||||
.d2h-diff-table {
|
||||
border-collapse: collapse;
|
||||
font-family: Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.d2h-files-diff {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.d2h-file-diff {
|
||||
overflow-y: hidden
|
||||
}
|
||||
|
||||
.d2h-file-side-diff {
|
||||
display: inline-block;
|
||||
margin-bottom: -8px;
|
||||
margin-right: -4px;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
width: 50%
|
||||
}
|
||||
|
||||
/*.d2h-code-line {
|
||||
padding: 0 8em
|
||||
}*/
|
||||
|
||||
.d2h-code-line, .d2h-code-side-line {
|
||||
display: inline-block;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.d2h-code-side-line {
|
||||
padding: 0 4.5em
|
||||
}
|
||||
|
||||
.d2h-code-line-ctn {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
vertical-align: middle;
|
||||
white-space: pre;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.d2h-code-line del, .d2h-code-side-line del {
|
||||
background-color: #ffb6ba
|
||||
}
|
||||
|
||||
.d2h-code-line del, .d2h-code-line ins, .d2h-code-side-line del, .d2h-code-side-line ins {
|
||||
border-radius: .2em;
|
||||
display: inline-block;
|
||||
margin-top: -1px;
|
||||
text-decoration: none;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.d2h-code-line ins, .d2h-code-side-line ins {
|
||||
background-color: #97f295;
|
||||
text-align: left
|
||||
}
|
||||
|
||||
.d2h-code-line-prefix {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline;
|
||||
padding: 0;
|
||||
white-space: pre
|
||||
}
|
||||
|
||||
.line-num1 {
|
||||
float: left
|
||||
}
|
||||
|
||||
.line-num1, .line-num2 {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
padding: 0 .5em;
|
||||
text-overflow: ellipsis;
|
||||
width: 3.5em
|
||||
}
|
||||
|
||||
.line-num2 {
|
||||
float: right
|
||||
}
|
||||
|
||||
.d2h-code-linenumber {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*.d2h-code-linenumber {
|
||||
background-color: #fff;
|
||||
border: solid #eee;
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: rgba(0, 0, 0, .3);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
width: 7.5em
|
||||
}*/
|
||||
|
||||
.d2h-code-linenumber:after {
|
||||
content: "\200b"
|
||||
}
|
||||
|
||||
.d2h-code-side-linenumber {
|
||||
background-color: #fff;
|
||||
border: solid #eee;
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: rgba(0, 0, 0, .3);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0 .5em;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
width: 4em
|
||||
}
|
||||
|
||||
.d2h-code-side-linenumber:after {
|
||||
content: "\200b"
|
||||
}
|
||||
|
||||
.d2h-code-side-emptyplaceholder, .d2h-emptyplaceholder {
|
||||
background-color: #f1f1f1;
|
||||
border-color: #e1e1e1
|
||||
}
|
||||
|
||||
.d2h-code-line-prefix, .d2h-code-linenumber, .d2h-code-side-linenumber, .d2h-emptyplaceholder {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none
|
||||
}
|
||||
|
||||
.d2h-code-linenumber, .d2h-code-side-linenumber {
|
||||
direction: rtl
|
||||
}
|
||||
|
||||
.d2h-del {
|
||||
background-color: #fee8e9;
|
||||
border-color: #e9aeae
|
||||
}
|
||||
|
||||
.d2h-ins {
|
||||
background-color: #dfd;
|
||||
border-color: #b4e2b4
|
||||
}
|
||||
|
||||
.d2h-info {
|
||||
background-color: #f8fafd;
|
||||
border-color: #d5e4f2;
|
||||
color: rgba(0, 0, 0, .3)
|
||||
}
|
||||
|
||||
.d2h-file-diff .d2h-del.d2h-change {
|
||||
background-color: #fdf2d0
|
||||
}
|
||||
|
||||
.d2h-file-diff .d2h-ins.d2h-change {
|
||||
background-color: #ded
|
||||
}
|
||||
|
||||
.d2h-file-list-wrapper {
|
||||
margin-bottom: 10px
|
||||
}
|
||||
|
||||
.d2h-file-list-wrapper a {
|
||||
color: #3572b0;
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.d2h-file-list-wrapper a:visited {
|
||||
color: #3572b0
|
||||
}
|
||||
|
||||
.d2h-file-list-header {
|
||||
text-align: left
|
||||
}
|
||||
|
||||
.d2h-file-list-title {
|
||||
font-weight: 700
|
||||
}
|
||||
|
||||
.d2h-file-list-line {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
text-align: left
|
||||
}
|
||||
|
||||
.d2h-file-list {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
.d2h-file-list > li {
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 0;
|
||||
padding: 5px 10px
|
||||
}
|
||||
|
||||
.d2h-file-list > li:last-child {
|
||||
border-bottom: none
|
||||
}
|
||||
|
||||
.d2h-file-switch {
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 10px
|
||||
}
|
||||
|
||||
.d2h-icon {
|
||||
fill: currentColor;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.d2h-deleted {
|
||||
color: #c33
|
||||
}
|
||||
|
||||
.d2h-added {
|
||||
color: #399839
|
||||
}
|
||||
|
||||
.d2h-changed {
|
||||
color: #d0b44c
|
||||
}
|
||||
|
||||
.d2h-moved {
|
||||
color: #3572b0
|
||||
}
|
||||
|
||||
.d2h-tag {
|
||||
background-color: #fff;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 10px;
|
||||
margin-left: 5px;
|
||||
padding: 0 2px
|
||||
}
|
||||
|
||||
.d2h-deleted-tag {
|
||||
border: 1px solid #c33
|
||||
}
|
||||
|
||||
.d2h-added-tag {
|
||||
border: 1px solid #399839
|
||||
}
|
||||
|
||||
.d2h-changed-tag {
|
||||
border: 1px solid #d0b44c
|
||||
}
|
||||
|
||||
.d2h-moved-tag {
|
||||
border: 1px solid #3572b0
|
||||
}
|
||||
1
logo/README.md
Normal file
@ -0,0 +1 @@
|
||||
Rust gear logo adapted from https://github.com/rust-lang/rust-artwork
|
||||
12
logo/maplibre-logo.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<svg id="maplibre-logo" width="141" height="30" viewBox="0 0 141 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M29.5898 13.807L28.3205 10.9372L27.741 13.807L25.8646 23.2717H22.8017L26.996 2.99011H27.3271L32.9011 13.9449L34.5567 17.6149L36.2124 13.9449L41.676 2.99011H41.9795L46.3394 23.2717H43.304L41.2621 13.807L40.655 10.9372L39.5513 13.807L34.6395 23.2717H34.474L29.5898 13.807Z" fill="white"/>
|
||||
<path d="M54.4667 23.5476C53.3261 23.5476 52.2684 23.2809 51.2934 22.7474C50.3368 22.1955 49.5641 21.4229 48.9755 20.4295C48.4052 19.4177 48.1201 18.2404 48.1201 16.8975C48.1201 15.573 48.3684 14.414 48.8651 13.4206C49.3802 12.4273 50.1068 11.6546 51.045 11.1027C51.9832 10.5509 53.087 10.2749 54.3563 10.2749C55.0921 10.2749 55.782 10.4037 56.4258 10.6612C57.0697 10.9188 57.6124 11.2407 58.0539 11.627C58.4954 11.995 58.7897 12.3629 58.9369 12.7308L58.9921 10.6061H61.8343V23.2717H59.0197L58.9645 21.0366C58.6518 21.6988 58.0815 22.2875 57.2537 22.8026C56.4258 23.2993 55.4968 23.5476 54.4667 23.5476ZM54.9634 21.0642C56.0119 21.0642 56.8949 20.7055 57.6124 19.988C58.3298 19.2522 58.6886 18.2956 58.6886 17.1182V16.9251C58.6886 16.1341 58.523 15.4258 58.1919 14.8003C57.8607 14.1749 57.41 13.6874 56.8398 13.3379C56.2695 12.9883 55.644 12.8136 54.9634 12.8136C53.786 12.8136 52.8754 13.1999 52.2316 13.9725C51.5877 14.7268 51.2658 15.7109 51.2658 16.9251C51.2658 18.1576 51.5785 19.1602 52.204 19.9328C52.8478 20.6871 53.7676 21.0642 54.9634 21.0642Z" fill="white"/>
|
||||
<path d="M65.8971 10.6061H68.7668V12.9515C69.7786 11.1671 71.3607 10.2749 73.513 10.2749C75.2974 10.2749 76.7415 10.8452 77.8453 11.9858C78.949 13.1079 79.5009 14.736 79.5009 16.8699C79.5009 18.1944 79.225 19.3625 78.6731 20.3743C78.1396 21.3861 77.4037 22.1679 76.4656 22.7198C75.5458 23.2717 74.5156 23.5476 73.375 23.5476C72.3081 23.5476 71.3791 23.3637 70.588 22.9958C69.8154 22.6094 69.2083 22.0668 68.7668 21.3677L68.7944 29.977H65.8971V10.6061ZM72.6852 21.0366C73.8809 21.0366 74.8007 20.6595 75.4446 19.9052C76.0884 19.1326 76.4104 18.1484 76.4104 16.9527C76.4104 15.7017 76.0884 14.7084 75.4446 13.9725C74.8191 13.2183 73.8993 12.8412 72.6852 12.8412C72.0229 12.8412 71.3975 13.0067 70.8088 13.3379C70.2385 13.6506 69.7786 14.1105 69.4291 14.7176C69.098 15.3062 68.9324 15.9961 68.9324 16.7871V16.9803C68.9324 17.7713 69.098 18.4795 69.4291 19.105C69.7786 19.7121 70.2385 20.1904 70.8088 20.5399C71.3791 20.871 72.0045 21.0366 72.6852 21.0366Z" fill="white"/>
|
||||
<path d="M82.7358 2.99011H85.854V20.5123H91.6763V23.2717H82.7358V2.99011Z" fill="#95BEFA"/>
|
||||
<path d="M94.6741 10.6061H97.7647V23.2717H94.6741V10.6061ZM96.1918 8.23297C95.6215 8.23297 95.1432 8.03981 94.7569 7.6535C94.3706 7.26718 94.1774 6.78889 94.1774 6.21861C94.1774 5.70352 94.3706 5.26202 94.7569 4.8941C95.1432 4.52618 95.6215 4.34222 96.1918 4.34222C96.7437 4.34222 97.2128 4.52618 97.5991 4.8941C97.9854 5.26202 98.1786 5.70352 98.1786 6.21861C98.1786 6.78889 97.9854 7.26718 97.5991 7.6535C97.2312 8.03981 96.7621 8.23297 96.1918 8.23297Z" fill="#95BEFA"/>
|
||||
<path d="M109.396 23.5476C108.366 23.5476 107.437 23.2993 106.609 22.8026C105.8 22.2875 105.239 21.6988 104.926 21.0366L104.871 23.2717H102.001V2.99011H104.926V10.7992L104.788 12.9515C105.101 12.2157 105.708 11.5902 106.609 11.0752C107.529 10.5417 108.523 10.2749 109.59 10.2749C110.84 10.2749 111.926 10.5601 112.846 11.1303C113.784 11.6822 114.501 12.4641 114.998 13.4758C115.495 14.4692 115.743 15.6282 115.743 16.9527C115.743 18.2956 115.449 19.4637 114.86 20.4571C114.29 21.4505 113.517 22.2139 112.542 22.7474C111.586 23.2809 110.537 23.5476 109.396 23.5476ZM108.9 21.0642C110.095 21.0642 111.015 20.6871 111.659 19.9328C112.303 19.1602 112.625 18.1668 112.625 16.9527C112.625 15.7201 112.303 14.7268 111.659 13.9725C111.034 13.1999 110.114 12.8136 108.9 12.8136C107.851 12.8136 106.968 13.1815 106.251 13.9173C105.533 14.6348 105.174 15.5822 105.174 16.7595V16.9527C105.174 17.7437 105.34 18.4519 105.671 19.0774C106.021 19.7029 106.471 20.1904 107.023 20.5399C107.594 20.8894 108.219 21.0642 108.9 21.0642Z" fill="#95BEFA"/>
|
||||
<path d="M118.839 10.6061H121.819V13.0895C122.113 12.2433 122.591 11.5626 123.254 11.0476C123.916 10.5325 124.67 10.2749 125.516 10.2749C126.105 10.2749 126.51 10.3301 126.731 10.4405L126.317 13.4482C126.151 13.3379 125.792 13.2827 125.241 13.2827C124.376 13.2827 123.585 13.5586 122.867 14.1105C122.168 14.6624 121.819 15.5454 121.819 16.7595V23.2717H118.839V10.6061Z" fill="#95BEFA"/>
|
||||
<path d="M134.826 23.5476C133.318 23.5476 132.057 23.2533 131.046 22.6646C130.034 22.0576 129.289 21.2573 128.81 20.264C128.332 19.2522 128.093 18.1484 128.093 16.9527C128.093 15.6098 128.369 14.4324 128.921 13.4206C129.491 12.4089 130.273 11.6362 131.266 11.1027C132.26 10.5509 133.382 10.2749 134.633 10.2749C136.583 10.2749 138.027 10.8176 138.965 11.903C139.922 12.9699 140.4 14.4784 140.4 16.4284C140.4 16.9251 140.372 17.4402 140.317 17.9737H131.211C131.414 19.0958 131.809 19.9052 132.398 20.4019C133.005 20.8986 133.842 21.147 134.909 21.147C135.792 21.147 136.518 21.0734 137.089 20.9262C137.659 20.779 138.183 20.5767 138.662 20.3191L139.572 22.4439C139.112 22.7382 138.487 22.9958 137.696 23.2165C136.905 23.4373 135.948 23.5476 134.826 23.5476ZM137.503 15.9041C137.521 14.7635 137.273 13.9633 136.758 13.5034C136.242 13.0251 135.507 12.786 134.55 12.786C132.618 12.786 131.505 13.8254 131.211 15.9041H137.503Z" fill="#95BEFA"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.400024 7.77786C0.400024 3.50197 4.11336 0.0229797 8.67822 0.0229797C13.2431 0.0229797 16.9564 3.50197 16.9564 7.77786C16.9564 14.2032 10.1867 19.628 9.12281 20.4806C9.05665 20.5336 9.01256 20.5689 8.99353 20.5857C8.90458 20.6635 8.7914 20.7027 8.67822 20.7027C8.56504 20.7027 8.45187 20.6635 8.36296 20.5857C8.34393 20.5689 8.29987 20.5336 8.23377 20.4806C7.17012 19.6283 0.400024 14.2034 0.400024 7.77786ZM8.67826 12.271C10.9386 12.271 12.7711 10.4111 12.7711 8.11672C12.7711 5.82238 10.9386 3.96245 8.67826 3.96245C6.41787 3.96245 4.58546 5.82238 4.58546 8.11672C4.58546 10.4111 6.41787 12.271 8.67826 12.271Z" fill="#95BEFA"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.01295 21.8499C3.40325 21.8499 2.909 22.3442 2.909 22.9539V26.04C2.909 26.6497 3.40325 27.1439 4.01295 27.1439H13.3464C13.9561 27.1439 14.4503 26.6497 14.4503 26.04V22.9539C14.4503 22.3442 13.9561 21.8499 13.3464 21.8499H4.01295ZM12.1107 23.7944H5.24863V25.1994H12.1107V23.7944Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.3 KiB |
70
logo/maplibre-rs-with-text.svg
Normal file
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 157 37" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
|
||||
<path d="M45.59,17.307L44.32,14.437L43.741,17.307L41.865,26.772L38.802,26.772L42.996,6.49L43.327,6.49L48.901,17.445L50.557,21.115L52.212,17.445L57.676,6.49L57.98,6.49L62.339,26.772L59.304,26.772L57.262,17.307L56.655,14.437L55.551,17.307L50.64,26.772L50.474,26.772L45.59,17.307Z" style="fill:rgb(40,94,170);fill-rule:nonzero;"/>
|
||||
<path d="M70.467,27.048C69.326,27.048 68.268,26.781 67.293,26.247C66.337,25.696 65.564,24.923 64.975,23.93C64.405,22.918 64.12,21.74 64.12,20.398C64.12,19.073 64.368,17.914 64.865,16.921C65.38,15.927 66.107,15.155 67.045,14.603C67.983,14.051 69.087,13.775 70.356,13.775C71.092,13.775 71.782,13.904 72.426,14.161C73.07,14.419 73.612,14.741 74.054,15.127C74.495,15.495 74.79,15.863 74.937,16.231L74.992,14.106L77.834,14.106L77.834,26.772L75.02,26.772L74.965,24.537C74.652,25.199 74.082,25.788 73.254,26.303C72.426,26.799 71.497,27.048 70.467,27.048ZM70.963,24.564C72.012,24.564 72.895,24.206 73.612,23.488C74.33,22.752 74.689,21.796 74.689,20.618L74.689,20.425C74.689,19.634 74.523,18.926 74.192,18.3C73.861,17.675 73.41,17.187 72.84,16.838C72.269,16.488 71.644,16.314 70.963,16.314C69.786,16.314 68.875,16.7 68.232,17.473C67.588,18.227 67.266,19.211 67.266,20.425C67.266,21.658 67.578,22.66 68.204,23.433C68.848,24.187 69.768,24.564 70.963,24.564Z" style="fill:rgb(40,94,170);fill-rule:nonzero;"/>
|
||||
<path d="M81.897,14.106L84.767,14.106L84.767,16.452C85.779,14.667 87.361,13.775 89.513,13.775C91.297,13.775 92.742,14.345 93.845,15.486C94.949,16.608 95.501,18.236 95.501,20.37C95.501,21.694 95.225,22.863 94.673,23.874C94.14,24.886 93.404,25.668 92.466,26.22C91.546,26.772 90.516,27.048 89.375,27.048C88.308,27.048 87.379,26.864 86.588,26.496C85.815,26.109 85.208,25.567 84.767,24.868L84.794,33.477L81.897,33.477L81.897,14.106ZM88.685,24.537C89.881,24.537 90.801,24.16 91.445,23.405C92.088,22.633 92.41,21.648 92.41,20.453C92.41,19.202 92.088,18.208 91.445,17.473C90.819,16.718 89.899,16.341 88.685,16.341C88.023,16.341 87.397,16.507 86.809,16.838C86.239,17.151 85.779,17.611 85.429,18.218C85.098,18.806 84.932,19.496 84.932,20.287L84.932,20.48C84.932,21.271 85.098,21.98 85.429,22.605C85.779,23.212 86.239,23.69 86.809,24.04C87.379,24.371 88.004,24.537 88.685,24.537Z" style="fill:rgb(40,94,170);fill-rule:nonzero;"/>
|
||||
<path d="M98.736,6.49L101.854,6.49L101.854,24.012L107.676,24.012L107.676,26.772L98.736,26.772L98.736,6.49Z" style="fill:rgb(149,190,250);fill-rule:nonzero;"/>
|
||||
<path d="M110.674,14.106L113.765,14.106L113.765,26.772L110.674,26.772L110.674,14.106ZM112.192,11.733C111.622,11.733 111.143,11.54 110.757,11.154C110.371,10.767 110.177,10.289 110.177,9.719C110.177,9.204 110.371,8.762 110.757,8.394C111.143,8.026 111.622,7.842 112.192,7.842C112.744,7.842 113.213,8.026 113.599,8.394C113.985,8.762 114.179,9.204 114.179,9.719C114.179,10.289 113.985,10.767 113.599,11.154C113.231,11.54 112.762,11.733 112.192,11.733Z" style="fill:rgb(149,190,250);fill-rule:nonzero;"/>
|
||||
<path d="M125.396,27.048C124.366,27.048 123.437,26.799 122.609,26.303C121.8,25.788 121.239,25.199 120.926,24.537L120.871,26.772L118.001,26.772L118.001,6.49L120.926,6.49L120.926,14.299L120.788,16.452C121.101,15.716 121.708,15.09 122.609,14.575C123.529,14.042 124.523,13.775 125.59,13.775C126.84,13.775 127.926,14.06 128.846,14.63C129.784,15.182 130.501,15.964 130.998,16.976C131.495,17.969 131.743,19.128 131.743,20.453C131.743,21.796 131.449,22.964 130.86,23.957C130.29,24.951 129.517,25.714 128.542,26.247C127.586,26.781 126.537,27.048 125.396,27.048ZM124.9,24.564C126.095,24.564 127.015,24.187 127.659,23.433C128.303,22.66 128.625,21.667 128.625,20.453C128.625,19.22 128.303,18.227 127.659,17.473C127.034,16.7 126.114,16.314 124.9,16.314C123.851,16.314 122.968,16.682 122.251,17.417C121.533,18.135 121.174,19.082 121.174,20.26L121.174,20.453C121.174,21.244 121.34,21.952 121.671,22.577C122.021,23.203 122.471,23.69 123.023,24.04C123.594,24.389 124.219,24.564 124.9,24.564Z" style="fill:rgb(149,190,250);fill-rule:nonzero;"/>
|
||||
<path d="M134.839,14.106L137.819,14.106L137.819,16.59C138.113,15.743 138.591,15.063 139.254,14.548C139.916,14.033 140.67,13.775 141.516,13.775C142.105,13.775 142.51,13.83 142.731,13.941L142.317,16.948C142.151,16.838 141.792,16.783 141.241,16.783C140.376,16.783 139.585,17.059 138.867,17.611C138.168,18.162 137.819,19.045 137.819,20.26L137.819,26.772L134.839,26.772L134.839,14.106Z" style="fill:rgb(149,190,250);fill-rule:nonzero;"/>
|
||||
<path d="M150.826,27.048C149.318,27.048 148.057,26.753 147.046,26.165C146.034,25.558 145.289,24.757 144.81,23.764C144.332,22.752 144.093,21.648 144.093,20.453C144.093,19.11 144.369,17.932 144.921,16.921C145.491,15.909 146.273,15.136 147.266,14.603C148.26,14.051 149.382,13.775 150.633,13.775C152.583,13.775 154.027,14.318 154.965,15.403C155.922,16.47 156.4,17.978 156.4,19.928C156.4,20.425 156.372,20.94 156.317,21.474L147.211,21.474C147.414,22.596 147.809,23.405 148.398,23.902C149.005,24.399 149.842,24.647 150.909,24.647C151.792,24.647 152.518,24.573 153.089,24.426C153.659,24.279 154.183,24.077 154.662,23.819L155.572,25.944C155.112,26.238 154.487,26.496 153.696,26.717C152.905,26.937 151.948,27.048 150.826,27.048ZM153.503,19.404C153.521,18.264 153.273,17.463 152.758,17.003C152.242,16.525 151.507,16.286 150.55,16.286C148.618,16.286 147.505,17.325 147.211,19.404L153.503,19.404Z" style="fill:rgb(149,190,250);fill-rule:nonzero;"/>
|
||||
<g id="Logo">
|
||||
<g id="pin">
|
||||
<circle cx="18.359" cy="18.5" r="14.045" style="fill:rgb(40,94,170);"/>
|
||||
<path d="M13.007,14.685C13.007,11.921 15.408,9.672 18.359,9.672C21.31,9.672 23.71,11.921 23.71,14.685C23.71,18.839 19.334,22.346 18.646,22.897C18.603,22.931 18.575,22.954 18.562,22.965C18.505,23.015 18.432,23.04 18.359,23.04C18.285,23.04 18.212,23.015 18.155,22.965C18.142,22.954 18.114,22.931 18.071,22.897C17.384,22.346 13.007,18.839 13.007,14.685ZM18.359,17.59C19.82,17.59 21.004,16.387 21.004,14.904C21.004,13.421 19.82,12.218 18.359,12.218C16.897,12.218 15.713,13.421 15.713,14.904C15.713,16.387 16.897,17.59 18.359,17.59Z" style="fill:rgb(149,190,250);"/>
|
||||
<path d="M15.332,23.797C14.911,23.797 14.659,24.133 14.659,24.47L14.659,26.488C14.659,26.908 14.995,27.16 15.332,27.16L21.385,27.16C21.806,27.16 22.058,26.824 22.058,26.488L22.058,24.47C22.058,24.049 21.722,23.797 21.385,23.797L15.332,23.797ZM20.545,25.058L16.088,25.058L16.088,25.983L20.545,25.983L20.545,25.058Z" style="fill:white;"/>
|
||||
</g>
|
||||
<g id="gear">
|
||||
<circle cx="18.359" cy="18.5" r="14.783" style="fill:none;stroke:rgb(149,190,250);stroke-width:2.41px;"/>
|
||||
<g id="cogs">
|
||||
<path id="cog" d="M34.173,19.531L35.892,18.5L34.173,17.469L34.173,19.531Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog1" serif:id="cog" d="M33.668,22.597L35.555,21.921L34.071,20.574L33.668,22.597Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog2" serif:id="cog" d="M32.575,25.505L34.558,25.21L33.364,23.599L32.575,25.505Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog3" serif:id="cog" d="M30.935,28.144L32.937,28.241L32.081,26.429L30.935,28.144Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog4" serif:id="cog" d="M28.812,30.412L30.757,30.898L30.271,28.953L28.812,30.412Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog5" serif:id="cog" d="M26.287,32.223L28.1,33.079L28.002,31.077L26.287,32.223Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog6" serif:id="cog" d="M23.458,33.506L25.068,34.699L25.363,32.716L23.458,33.506Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog7" serif:id="cog" d="M20.432,34.212L21.779,35.697L22.455,33.81L20.432,34.212Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog8" serif:id="cog" d="M17.327,34.315L18.359,36.034L19.39,34.315L17.327,34.315Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog9" serif:id="cog" d="M14.262,33.81L14.938,35.697L16.285,34.212L14.262,33.81Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog10" serif:id="cog" d="M11.354,32.716L11.649,34.699L13.259,33.506L11.354,32.716Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog11" serif:id="cog" d="M8.715,31.077L8.617,33.079L10.43,32.223L8.715,31.077Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog12" serif:id="cog" d="M6.446,28.953L5.96,30.898L7.905,30.412L6.446,28.953Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog13" serif:id="cog" d="M4.636,26.429L3.78,28.241L5.782,28.144L4.636,26.429Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog14" serif:id="cog" d="M3.353,23.599L2.159,25.21L4.142,25.505L3.353,23.599Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog15" serif:id="cog" d="M2.646,20.574L1.162,21.921L3.049,22.597L2.646,20.574Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog16" serif:id="cog" d="M2.544,17.469L0.825,18.5L2.544,19.531L2.544,17.469Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog17" serif:id="cog" d="M3.049,14.403L1.162,15.079L2.646,16.426L3.049,14.403Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog18" serif:id="cog" d="M4.142,11.495L2.159,11.79L3.353,13.401L4.142,11.495Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog19" serif:id="cog" d="M5.782,8.856L3.78,8.759L4.636,10.571L5.782,8.856Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog20" serif:id="cog" d="M7.905,6.588L5.96,6.102L6.446,8.047L7.905,6.588Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog21" serif:id="cog" d="M10.43,4.777L8.617,3.921L8.715,5.923L10.43,4.777Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog22" serif:id="cog" d="M13.259,3.494L11.649,2.301L11.354,4.284L13.259,3.494Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog23" serif:id="cog" d="M16.285,2.788L14.938,1.303L14.262,3.19L16.285,2.788Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog24" serif:id="cog" d="M19.39,2.685L18.359,0.966L17.327,2.685L19.39,2.685Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog25" serif:id="cog" d="M22.455,3.19L21.779,1.303L20.432,2.788L22.455,3.19Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog26" serif:id="cog" d="M25.363,4.284L25.068,2.301L23.458,3.494L25.363,4.284Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog27" serif:id="cog" d="M28.002,5.923L28.1,3.921L26.287,4.777L28.002,5.923Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog28" serif:id="cog" d="M30.271,8.047L30.757,6.102L28.812,6.588L30.271,8.047Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog29" serif:id="cog" d="M32.081,10.571L32.937,8.759L30.935,8.856L32.081,10.571Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog30" serif:id="cog" d="M33.364,13.401L34.558,11.79L32.575,11.495L33.364,13.401Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
<path id="cog31" serif:id="cog" d="M34.071,16.426L35.555,15.079L33.668,14.403L34.071,16.426Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:0.69px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="mounts">
|
||||
<path id="mount" d="M15.952,4.06L18.359,6.467L20.765,4.06L15.952,4.06Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:1.38px;stroke-linejoin:round;"/>
|
||||
<path id="mount1" serif:id="mount" d="M31.348,11.749L29.803,14.782L32.835,16.327L31.348,11.749Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:1.38px;stroke-linejoin:round;"/>
|
||||
<path id="mount2" serif:id="mount" d="M28.793,28.767L25.431,28.235L24.899,31.596L28.793,28.767Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:1.38px;stroke-linejoin:round;"/>
|
||||
<path id="mount3" serif:id="mount" d="M11.818,31.596L11.286,28.235L7.924,28.767L11.818,31.596Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:1.38px;stroke-linejoin:round;"/>
|
||||
<path id="mount4" serif:id="mount" d="M3.882,16.327L6.914,14.782L5.369,11.749L3.882,16.327Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:1.38px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="mount-holes" serif:id="mount holes">
|
||||
<ellipse cx="18.359" cy="4.675" rx="0.896" ry="0.896" style="fill:rgb(40,94,170);"/>
|
||||
<path d="M4.358,13.951C4.51,13.481 5.016,13.223 5.487,13.376C5.957,13.529 6.215,14.035 6.063,14.505C5.91,14.975 5.404,15.233 4.933,15.08C4.463,14.927 4.205,14.421 4.358,13.951Z" style="fill:rgb(40,94,170);"/>
|
||||
<path d="M9.706,30.41C9.306,30.119 9.217,29.558 9.508,29.158C9.799,28.758 10.359,28.669 10.759,28.96C11.159,29.25 11.248,29.811 10.957,30.211C10.666,30.611 10.105,30.7 9.706,30.41Z" style="fill:rgb(40,94,170);"/>
|
||||
<path d="M32.359,13.951C32.512,14.421 32.254,14.927 31.784,15.08C31.313,15.233 30.807,14.975 30.654,14.505C30.502,14.035 30.76,13.529 31.23,13.376C31.701,13.223 32.207,13.481 32.359,13.951Z" style="fill:rgb(40,94,170);"/>
|
||||
<path d="M27.012,30.41C26.612,30.7 26.051,30.611 25.76,30.211C25.469,29.811 25.558,29.25 25.958,28.96C26.358,28.669 26.919,28.758 27.209,29.158C27.5,29.558 27.411,30.119 27.012,30.41Z" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
148
logo/maplibre-rs.svg
Normal file
@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 532 532" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
|
||||
<g transform="matrix(1,0,0,1,-131.742,-103.818)">
|
||||
<g transform="matrix(2.71376,0,0,2.71376,233.68,205.756)">
|
||||
<g transform="matrix(4.86716,0,0,4.86716,-12.724,-12.724)">
|
||||
<circle cx="15" cy="15" r="14.3" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
<g transform="matrix(3.20362,0,0,3.20362,32.4816,16.4597)">
|
||||
<path d="M0.4,7.778C0.4,3.502 4.113,0.023 8.678,0.023C13.243,0.023 16.956,3.502 16.956,7.778C16.956,14.203 10.187,19.628 9.123,20.481C9.057,20.534 9.013,20.569 8.994,20.586C8.905,20.664 8.791,20.703 8.678,20.703C8.565,20.703 8.452,20.664 8.363,20.586C8.344,20.569 8.3,20.534 8.234,20.481C7.17,19.628 0.4,14.203 0.4,7.778ZM8.678,12.271C10.939,12.271 12.771,10.411 12.771,8.117C12.771,5.822 10.939,3.962 8.678,3.962C6.418,3.962 4.585,5.822 4.585,8.117C4.585,10.411 6.418,12.271 8.678,12.271Z" style="fill:rgb(149,190,250);"/>
|
||||
</g>
|
||||
<g transform="matrix(4.16667,0,0,4.16667,-2.21667,-2.21667)">
|
||||
<path d="M11.4,21.3C10.9,21.3 10.6,21.7 10.6,22.1L10.6,24.5C10.6,25 11,25.3 11.4,25.3L18.6,25.3C19.1,25.3 19.4,24.9 19.4,24.5L19.4,22.1C19.4,21.6 19,21.3 18.6,21.3L11.4,21.3ZM17.6,22.8L12.3,22.8L12.3,23.9L17.6,23.9L17.6,22.8Z" style="fill:white;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="gear" transform="matrix(4.62351,0,0,4.62351,397.275,369.35)">
|
||||
<circle cx="0" cy="0" r="43" style="fill:none;stroke:rgb(149,190,250);stroke-width:7px;"/>
|
||||
<g id="cogs">
|
||||
<path id="cog" d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
<g id="cog1" serif:id="cog" transform="matrix(0.980785,0.19509,-0.19509,0.980785,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog2" serif:id="cog" transform="matrix(0.92388,0.382683,-0.382683,0.92388,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog3" serif:id="cog" transform="matrix(0.83147,0.55557,-0.55557,0.83147,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog4" serif:id="cog" transform="matrix(0.707107,0.707107,-0.707107,0.707107,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog5" serif:id="cog" transform="matrix(0.55557,0.83147,-0.83147,0.55557,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog6" serif:id="cog" transform="matrix(0.382683,0.92388,-0.92388,0.382683,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog7" serif:id="cog" transform="matrix(0.19509,0.980785,-0.980785,0.19509,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog8" serif:id="cog" transform="matrix(-3.82857e-16,1,-1,-3.82857e-16,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog9" serif:id="cog" transform="matrix(-0.19509,0.980785,-0.980785,-0.19509,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog10" serif:id="cog" transform="matrix(-0.382683,0.92388,-0.92388,-0.382683,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog11" serif:id="cog" transform="matrix(-0.55557,0.83147,-0.83147,-0.55557,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog12" serif:id="cog" transform="matrix(-0.707107,0.707107,-0.707107,-0.707107,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog13" serif:id="cog" transform="matrix(-0.83147,0.55557,-0.55557,-0.83147,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog14" serif:id="cog" transform="matrix(-0.92388,0.382683,-0.382683,-0.92388,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog15" serif:id="cog" transform="matrix(-0.980785,0.19509,-0.19509,-0.980785,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog16" serif:id="cog" transform="matrix(-1,-7.65714e-16,7.65714e-16,-1,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog17" serif:id="cog" transform="matrix(-0.980785,-0.19509,0.19509,-0.980785,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog18" serif:id="cog" transform="matrix(-0.92388,-0.382683,0.382683,-0.92388,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog19" serif:id="cog" transform="matrix(-0.83147,-0.55557,0.55557,-0.83147,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog20" serif:id="cog" transform="matrix(-0.707107,-0.707107,0.707107,-0.707107,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog21" serif:id="cog" transform="matrix(-0.55557,-0.83147,0.83147,-0.55557,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog22" serif:id="cog" transform="matrix(-0.382683,-0.92388,0.92388,-0.382683,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog23" serif:id="cog" transform="matrix(-0.19509,-0.980785,0.980785,-0.19509,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog24" serif:id="cog" transform="matrix(7.04481e-16,-1,1,7.04481e-16,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog25" serif:id="cog" transform="matrix(0.19509,-0.980785,0.980785,0.19509,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog26" serif:id="cog" transform="matrix(0.382683,-0.92388,0.92388,0.382683,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog27" serif:id="cog" transform="matrix(0.55557,-0.83147,0.83147,0.55557,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog28" serif:id="cog" transform="matrix(0.707107,-0.707107,0.707107,0.707107,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog29" serif:id="cog" transform="matrix(0.83147,-0.55557,0.55557,0.83147,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog30" serif:id="cog" transform="matrix(0.92388,-0.382683,0.382683,0.92388,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="cog31" serif:id="cog" transform="matrix(0.980785,-0.19509,0.19509,0.980785,0,0)">
|
||||
<path d="M46,3L51,0L46,-3L46,3Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:2px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="mounts">
|
||||
<path id="mount" d="M-7,-42L0,-35L7,-42L-7,-42Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:4px;stroke-linejoin:round;"/>
|
||||
<g id="mount1" serif:id="mount" transform="matrix(0.309017,0.951057,-0.951057,0.309017,0,0)">
|
||||
<path d="M-7,-42L0,-35L7,-42L-7,-42Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:4px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="mount2" serif:id="mount" transform="matrix(-0.809017,0.587785,-0.587785,-0.809017,0,0)">
|
||||
<path d="M-7,-42L0,-35L7,-42L-7,-42Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:4px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="mount3" serif:id="mount" transform="matrix(-0.809017,-0.587785,0.587785,-0.809017,0,0)">
|
||||
<path d="M-7,-42L0,-35L7,-42L-7,-42Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:4px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
<g id="mount4" serif:id="mount" transform="matrix(0.309017,-0.951057,0.951057,0.309017,0,0)">
|
||||
<path d="M-7,-42L0,-35L7,-42L-7,-42Z" style="fill:rgb(149,190,250);fill-rule:nonzero;stroke:rgb(149,190,250);stroke-width:4px;stroke-linejoin:round;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1.10964,0,0,1.10964,-43.5583,-40.4966)">
|
||||
<g transform="matrix(0.633035,0,0,0.633505,344.191,59.3846)">
|
||||
<circle cx="83.855" cy="224.803" r="17.148" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.195618,-0.602052,0.602499,0.195764,86.0761,324.051)">
|
||||
<circle cx="83.855" cy="224.803" r="17.148" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.512136,-0.372088,0.372365,-0.512516,258.027,651.32)">
|
||||
<circle cx="83.855" cy="224.803" r="17.148" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.195618,0.602052,-0.602499,0.195764,675.666,223.08)">
|
||||
<circle cx="83.855" cy="224.803" r="17.148" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.512136,0.372088,-0.372365,-0.512516,622.413,588.916)">
|
||||
<circle cx="83.855" cy="224.803" r="17.148" style="fill:rgb(40,94,170);"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
30
src/SUMMARY.md
Normal file
@ -0,0 +1,30 @@
|
||||
# maplibre-rs documentation
|
||||
|
||||
[Introduction](./introduction.md)
|
||||
[Supported Platforms](./supported-platforms.md)
|
||||
[Developer Log](./developer-log.md)
|
||||
|
||||
|
||||
- [User Guide](./user-guide/index.md)
|
||||
|
||||
|
||||
- [Development Guide](./development-guide/index.md)
|
||||
- [Building](./development-guide/building.md)
|
||||
- [Debugging](./development-guide/debugging.md)
|
||||
|
||||
|
||||
- [Development Documents](./development-documents/index.md)
|
||||
- [Architecture](./development-documents/architecture.md)
|
||||
- [Design](./development-documents/design.md)
|
||||
- [Caching](./development-documents/caching.md)
|
||||
- [Stencil Masking](./development-documents/stencil-masking.md)
|
||||
- [Font Rendering](./development-documents/font-rendering.md)
|
||||
- [Library Packaging](./development-documents/library-packaging.md)
|
||||
- [Apple](./development-documents/library-packaging/apple.md)
|
||||
- [Android](./development-documents/library-packaging/android.md)
|
||||
- [Web](./development-documents/library-packaging/web.md)
|
||||
|
||||
- [Appendix](./appendix/index.md)
|
||||
- [Link Collection](./appendix/link-collection.md)
|
||||
|
||||
|
||||
51
src/appendix/index.md
Normal file
@ -0,0 +1,51 @@
|
||||
# Appendix
|
||||
|
||||
|
||||
## Goals
|
||||
|
||||
### Next Major Goals
|
||||
|
||||
* ~~Improve buffer_pool eviction rules~~
|
||||
* ~~Use MPI: https://doc.rust-lang.org/book/ch16-02-message-passing.html~~
|
||||
* Input-handling via events and functional pipelines
|
||||
* ~~Show old tiles until new tile is ready / Show mixed tiles, based on availability~~
|
||||
* Use a simple style definition
|
||||
* type: background/fill/line
|
||||
* minzoom/maxzoom
|
||||
* source
|
||||
* source-layer
|
||||
* paint (fill-color)
|
||||
* Map feeling:
|
||||
* Wrap world around in x direction
|
||||
* Limit panning in y direction
|
||||
* Nicer default map style
|
||||
|
||||
### Intermediate Goals
|
||||
* Support multiple projections? PoC such that we are sure the renderer is acceptable
|
||||
|
||||
### Future Goals
|
||||
* Very simple text rendering
|
||||
* Cache tessellation results
|
||||
* We have three "caches": downloaded tiles, tessellated tiles, gpu tiles
|
||||
* Handle missing tiles
|
||||
* Support different tile raster addressing
|
||||
|
||||
## Future Ideas
|
||||
|
||||
* Use [rust-gpu](https://github.com/EmbarkStudios/rust-gpu) as shading language
|
||||
* Focus on accessibility of maps: https://www.w3.org/WAI/RD/wiki/Accessible_Maps
|
||||
* Display in AR: https://developer.apple.com/documentation/arkit/displaying_an_ar_experience_with_metal
|
||||
* Use tracing framework: [tracing](https://docs.rs/tracing/0.1.31/tracing)
|
||||
|
||||
## Challenges:
|
||||
|
||||
* Accuracy of floating point numbers is very bad for big world view
|
||||
coordinates ([Plot](https://en.wikipedia.org/wiki/IEEE_754#/media/File:IEEE754.svg))
|
||||
* [Perils of World Space](https://paroj.github.io/gltut/Positioning/Tut07%20The%20Perils%20of%20World%20Space.html)
|
||||
|
||||
### Create paths for tessellating streets
|
||||
|
||||
Streets can have unusual shaped like shown [here](https://www.google.de/maps/@48.1353883,11.5717232,19z) in Munich. OSM
|
||||
does not offer such data and therefore just renders an ordinary street contour like
|
||||
shown [here](https://www.openstreetmap.org/query?lat=48.13533&lon=11.57143).
|
||||
Because the data is probably not available this is a very hard challenge.
|
||||
125
src/appendix/link-collection.md
Normal file
@ -0,0 +1,125 @@
|
||||
# Related Resources
|
||||
|
||||
## Talks
|
||||
|
||||
* [2022-04-13-World-in-Vectors](https://docs.google.com/presentation/d/e/2PACX-1vRsi-sGsqwUXEIQDClaZF4BH2RgjufQQ-yxFDWeOGrm0EbIf4H4lFY3U4at4cAIlxSTWi4XyF2LKjRu/pub)
|
||||
|
||||
## Related Projects
|
||||
|
||||
* [Tangram Renderer](https://github.com/tangrams/tangram/)
|
||||
* [Tilezen/Nextzen](https://www.nextzen.org/)
|
||||
* [Protomaps: New Maps Stack](https://protomaps.com/)
|
||||
* [Harp GL](https://www.harp.gl/)
|
||||
|
||||
## GIS
|
||||
* [Google Maps Projection](https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection)
|
||||
* [Grid Calculation Examples](https://gist.github.com/maptiler/fddb5ce33ba995d5523de9afdf8ef118)
|
||||
* [Slippy map tilenames](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames) (also known as XYZ)
|
||||
* [TMS](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#TileMap_Diagram)
|
||||
* [Mapbox Adaptive Projections](https://www.mapbox.com/blog/adaptive-projections)
|
||||
* [Bing Map Tile System](https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system)
|
||||
* [Bing: Understanding Scale and Resolution](https://docs.microsoft.com/en-us/bingmaps/articles/understanding-scale-and-resolution)
|
||||
|
||||
## WebAssembly and WebWorkers
|
||||
|
||||
Specs:
|
||||
|
||||
* [Thread/Atomics Proposal for WASM](https://webassembly.github.io/threads/core/bikeshed/#atomic-memory-instructions%E2%91%A2)
|
||||
|
||||
Projects:
|
||||
|
||||
* [Experiment with shared memory](https://github.com/Ciantic/rust-shared-wasm-experiments) and [the idea behind it](https://github.com/rustwasm/wasm-bindgen/issues/2225)
|
||||
* [Shared channel](https://github.com/wasm-rs/shared-channel)
|
||||
* [Bridge for async executors](https://docs.rs/async_executors/latest/async_executors/)
|
||||
* [Rayon for WebAssembly](https://github.com/GoogleChromeLabs/wasm-bindgen-rayon)
|
||||
* [wasm-mt: postMessage message passing](https://github.com/w3reality/wasm-mt)
|
||||
*
|
||||
Articles:
|
||||
|
||||
* [WebAssembly Threads (official)](https://web.dev/webassembly-threads/)
|
||||
* [Multithreading Rust and Wasm 2018](https://rustwasm.github.io/2018/10/24/multithreading-rust-and-wasm.html)
|
||||
* [postMessage Performance](https://surma.dev/things/is-postmessage-slow/)
|
||||
* [A practical guide to WebAssembly memory](https://radu-matei.com/blog/practical-guide-to-wasm-memory/)
|
||||
|
||||
Examples:
|
||||
* [WASM in a WebWorker](https://rustwasm.github.io/wasm-bindgen/examples/wasm-in-web-worker.html)
|
||||
* [Building for Shared Memory](https://github.com/rustwasm/wasm-bindgen/blob/main/examples/raytrace-parallel/build.sh)
|
||||
* [Parallel Raytracing](https://rustwasm.github.io/docs/wasm-bindgen/examples/raytrace.html)
|
||||
|
||||
## Rendering
|
||||
|
||||
Specs:
|
||||
|
||||
* [WebGPU Spec](https://gpuweb.github.io/gpuweb/)
|
||||
* [WGSL Spec](https://gpuweb.github.io/gpuweb/wgsl/)
|
||||
* [WGSL Struct Alignment](https://gpuweb.github.io/gpuweb/wgsl/#alignment-and-size)
|
||||
* [Mismatches Stencil Test](https://github.com/gpuweb/gpuweb/blob/main/design/Pipelines.md#depth-stencil-state)
|
||||
|
||||
Articles:
|
||||
|
||||
* [Life of a Tile (MapLibre)](https://github.com/maplibre/maplibre-gl-js/blob/main/docs/life-of-a-tile.md)
|
||||
|
||||
Tutorials:
|
||||
|
||||
* [Stencil Testing](https://learnopengl.com/Advanced-OpenGL/Stencil-testing)
|
||||
* [Camera](https://learnopengl.com/Getting-started/Camera)
|
||||
* [Writing an efficient Vulkan renderer](https://zeux.io/2020/02/27/writing-an-efficient-vulkan-renderer/)
|
||||
|
||||
Examples:
|
||||
|
||||
* [Stencil Mask Example](https://github.com/ruffle-rs/ruffle/blob/master/render/wgpu/src/pipelines.rs#L330)
|
||||
* [WGPU Examples](https://github.com/gfx-rs/wgpu/blob/ad0c8d4f781aaf9907b5f3a90bc7d00a13c51153/wgpu/examples/README.md)
|
||||
|
||||
## Maths
|
||||
|
||||
Articles:
|
||||
* [Magnificent Matrix](https://ncase.me/matrix/)
|
||||
|
||||
Examples:
|
||||
|
||||
* [Dolly Camera](https://github.com/h3r2tic/dolly)
|
||||
|
||||
## Font Rendering
|
||||
|
||||
Specs:
|
||||
|
||||
* [MapBox Glyphs Spec](https://github.com/mapbox/node-fontnik/blob/master/proto/glyphs.proto)
|
||||
|
||||
Articles:
|
||||
|
||||
* [Signed distance function](https://en.wikipedia.org/wiki/Signed_distance_function)
|
||||
|
||||
Projects:
|
||||
|
||||
* [Mapbox fontnik](https://github.com/mapbox/node-fontnik/)
|
||||
* [TinySDK (JS)](https://github.com/mapbox/tiny-sdf)
|
||||
* [RustType](https://github.com/redox-os/rusttype)
|
||||
* [SDF Render](https://docs.rs/sdf_glyph_renderer/latest/sdf_glyph_renderer/)
|
||||
* [pbf_font_tools](https://github.com/stadiamaps/pbf_font_tools)
|
||||
* [Multi-channel signed distance field generator](https://github.com/Chlumsky/msdfgen)
|
||||
* [MSDF font atlas generator ](https://github.com/Chlumsky/msdf-atlas-gen)
|
||||
|
||||
## Tessellation
|
||||
|
||||
Projects:
|
||||
|
||||
* [earcutr](https://github.com/donbright/earcutr)
|
||||
* [Line Tessellation in MapLibre](https://github.com/maplibre/maplibre-gl-js/blob/main/src/data/bucket/line_bucket.ts)
|
||||
|
||||
## Specifications
|
||||
|
||||
* [TileJSON](https://github.com/mapbox/tilejson-spec)
|
||||
|
||||
|
||||
## Render Graphs
|
||||
|
||||
* https://github.com/metal-by-example/simple-instancing/blob/master/MetalSimpleInstancing/Renderer.swift
|
||||
* https://github.com/troughton/Substrate
|
||||
* https://de.slideshare.net/DICEStudio/framegraph-extensible-rendering-architecture-in-frostbite
|
||||
* http://themaister.net/blog/2017/08/15/render-graphs-and-vulkan-a-deep-dive/
|
||||
* http://themaister.net/blog/2017/08/15/render-graphs-and-vulkan-a-deep-dive/
|
||||
|
||||
## Animation
|
||||
|
||||
* https://crates.io/crates/pareen
|
||||
* https://crates.io/crates/keyframe
|
||||
3
src/developer-log.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Developer Log
|
||||
|
||||
I'm regularly releasing blog posts [on my blog](https://maxammann.org/categories/maplibre/).
|
||||
24
src/development-documents/architecture.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Architecture
|
||||
|
||||
## Rendering Architecture
|
||||
|
||||
The big picture of wgpu is as follows:
|
||||
|
||||

|
||||
|
||||
A simplified version is shown below:
|
||||
|
||||

|
||||
|
||||
Notes:
|
||||
* wgpu is able to create an interface through which we can reach any device with a GPU.
|
||||
|
||||
## OS Architecture
|
||||
|
||||

|
||||
|
||||
Notes:
|
||||
* The ability to use shared memory or the atomic instruction set of WASM comes by enabling compilation features.
|
||||
* `threads` support here does not introduce threads like we know them from Linux. It introduces
|
||||
* [support for atomics](https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md) like
|
||||
specified in a working draft to WebAssembly. Threads are simulated using WebWorkers by the browser.
|
||||
12
src/development-documents/caching.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Caching
|
||||
|
||||
The caching for maplibre-rs is handled on the networking layer. This means that data which is fetched over slow IO is cached in
|
||||
the format of the network requests. The maplibre-rs library is not introducing a separate serialization format for caching.
|
||||
|
||||
Instead, caching functionality of HTTP client libraries of the web platform are used. This has the advantage that we can
|
||||
honor HTTP headers which configure caching. This is very important for fetched tiles, as they can have an expiry date.
|
||||
|
||||
* On the web the browser is automatically caching raw tiles.
|
||||
* On Linux, MacOs, iOS and Android we are
|
||||
utilizing [reqwest-middleware-cache](https://crates.io/crates/reqwest-middleware-cache/), which writes raw network
|
||||
requests to disk.
|
||||
16
src/development-documents/design.md
Normal file
@ -0,0 +1,16 @@
|
||||
# Design
|
||||
|
||||
<script src="https://unpkg.com/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js" >
|
||||
|
||||
</script>
|
||||
|
||||
<embed style="border-style: solid; width: 100%" type="image/svg+xml" src="./figures/domain-model.drawio.svg" id="my-embed"/>
|
||||
|
||||
<script>
|
||||
document.getElementById('my-embed').addEventListener('load', function(){
|
||||
let pan = svgPanZoom(document.getElementById('my-embed'), {controlIconsEnabled: true});
|
||||
pan.resize();
|
||||
pan.pan();
|
||||
pan.center();
|
||||
})
|
||||
</script>
|
||||
|
After Width: | Height: | Size: 46 KiB |
4
src/development-documents/figures/gpu-stack.drawio.svg
Normal file
|
After Width: | Height: | Size: 13 KiB |
4
src/development-documents/figures/os-stack.drawio.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 116 KiB |
49
src/development-documents/font-rendering.md
Normal file
@ -0,0 +1,49 @@
|
||||
# Font Rendering
|
||||
|
||||
There exists no universally perfect solution to font rendering. Depending on the runtime environment a method needs to
|
||||
be chosen. [This StackOverflow post](https://stackoverflow.com/a/5278471) outlines some state-of-the-art methods. Some
|
||||
more approaches are described [here](https://aras-p.info/blog/2017/02/15/Font-Rendering-is-Getting-Interesting/).
|
||||
|
||||
From my perspective the following approaches could work potentially:
|
||||
|
||||
1. Tessellate Fonts
|
||||
2. SDF Font Rendering
|
||||
3. GPU Text Rendering directly from Bezier Curves
|
||||
4. Draw text using a Web Canvas and load them to GPU
|
||||
|
||||
There is a thesis which summarizes some methods [here](https://lup.lub.lu.se/luur/download?func=downloadFile&recordOId=9024910&fileOId=9024911).
|
||||
A link collection about font related projects can be viewed [here](../appendix/link-collection.md#font-rendering).
|
||||
|
||||
## Approaches
|
||||
|
||||
### Tessellate Fonts
|
||||
There is [ttf2mesh](https://github.com/fetisov/ttf2mesh) which generates meshes. I was already able to generate about 1k
|
||||
glyphs with ~40FPS.
|
||||
|
||||
### SDF Font Rendering
|
||||
|
||||
There is a blogpost by Mapbox [here](https://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817).
|
||||
Some more implementation documents are available [here](https://github.com/mapbox/mapbox-gl-native/wiki/Text-Rendering).
|
||||
A good foundation for SDF fonts was created by Chlumsky with [msdfgen](https://github.com/Chlumsky/msdfgen).
|
||||
|
||||
|
||||
### GPU Text Rendering from Bezier Curves
|
||||
|
||||
The solutions exist:
|
||||
|
||||
* [By Will Dobbie](https://wdobbie.com/post/gpu-text-rendering-with-vector-textures/) with an
|
||||
implementation [here](https://github.com/azsn/gllabel)
|
||||
* [Slug Library](http://sluglibrary.com/) which is patented and probably therefore not usable
|
||||
|
||||
[Here](https://jcgt.org/published/0006/02/02/paper.pdf) is the whitepaper of the Slug library. There is also
|
||||
a [poster](http://sluglibrary.com/slug_algorithm.pdf) about it. There also exists
|
||||
an [open implementation](https://github.com/mightycow/Sluggish).
|
||||
|
||||
### Draw text using a Web Canvas
|
||||
|
||||
This approach has the downside that we can not dynamically scale rendered fonts according to the current zoom level.
|
||||
|
||||
|
||||
## Other Approaches
|
||||
|
||||
* [16x AA font rendering using coverage masks](https://superluminal.eu/16x-aa-font-rendering-using-coverage-masks-part-iii/)
|
||||
1
src/development-documents/index.md
Normal file
@ -0,0 +1 @@
|
||||
# Development Documents
|
||||
1
src/development-documents/library-packaging.md
Normal file
@ -0,0 +1 @@
|
||||
# Library Packaging
|
||||
18
src/development-documents/library-packaging/android.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Android
|
||||
|
||||
## Gradle Project Setup
|
||||
|
||||
In order to package an Android `.aar` archive we use
|
||||
the [rust-android-gradle](https://github.com/mozilla/rust-android-gradle).
|
||||
Except some customisations for the latest NDK toolchain release everything worked flawlessly.
|
||||
|
||||
## JNI
|
||||
|
||||
There is no way right now to automatically generate JNI stubs for Rust. A manual example is available in the android
|
||||
crate of maplibre-rs.
|
||||
|
||||
## Single NativeActivity
|
||||
|
||||
Right now `winit` only allows the usage of a `NativeActivity`. This means the application needs to run in fullscreen.
|
||||
This native activity is referenced in the ´AndroidManifest.xml` by defining the name of the shared library.
|
||||
[Tracking Issue](https://github.com/maplibre/maplibre-rs/issues/28)
|
||||
172
src/development-documents/library-packaging/apple.md
Normal file
@ -0,0 +1,172 @@
|
||||
# Apple
|
||||
|
||||
On Apple maplibre-rs is packaged as:
|
||||
* Multiple .xcarchive packages which include a framework. Each for a different architecture and platform.
|
||||
* A single .xcframework package which contains multiple frameworks of different architectures and platforms.
|
||||
* A swift package which just references the .xcframework package and makes distributing easier.
|
||||
|
||||
The following diffs are extracted from [this diff](../../../../apple/framework.diff). They should serve as documentation
|
||||
for the XCode project. This is required because XCode is a mess.
|
||||
|
||||
## XCode Project description
|
||||
|
||||
### Library Entry
|
||||
|
||||
{{#include figures/diff-maplibre-swift.html}}
|
||||
|
||||
The swift code above is the main entry for the Swift API. From this entry file we can expose more API of maplibre-rs.
|
||||
Any C functions which are referenced in the XCode framework's header are available automatically in Swift.
|
||||
|
||||
### Framework
|
||||
|
||||
{{#include figures/diff-xcode-project-framework.html}}
|
||||
|
||||
The framework needs to link against the static library `libmaplibre_apple.a`, which has been generated by Cargo.
|
||||
In order to allow XCode to dynamically select the library based on the `Library Search Path` (Build Settings) one needs
|
||||
to add a relative file to XCode. The entry in the `project.pbxproj` should look like that:
|
||||
|
||||
```js
|
||||
B085D5A32812987B00906D21 /* libmaplibre_apple.a */ = {
|
||||
isa = PBXFileReference;
|
||||
lastKnownFileType = archive.ar;
|
||||
path = libmaplibre_apple.a;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
```
|
||||
|
||||
Note the `path = libmaplibre_apple.a`. This path does not link to a concrete file, but to a file which can be found
|
||||
during building.
|
||||
|
||||
A file can be added to the frameworks and library link phase in XCode.
|
||||
|
||||
### Cargo Build Phase
|
||||
|
||||
{{#include figures/diff-xcode-project-build-cargo.html}}
|
||||
|
||||
In order to trigger Cargo builds when starting a XCode build we include a `Cargo Build` script. This build script needs
|
||||
to run before the linking phase (drag and drop it to the top).
|
||||
|
||||
The following build script builds based on XCode environment variables the correct static library. We depend on
|
||||
the `$ARCHS`
|
||||
environment variable, as the others seem unreliable. Note that this can include multiple architectures, unless the build
|
||||
setting `ONLY_ACTIVE_ARCH` is set to `YES`.
|
||||
|
||||
```bash
|
||||
arch="unknown"
|
||||
vendor="apple"
|
||||
os_type="unknown"
|
||||
environment_type=""
|
||||
|
||||
mode=""
|
||||
|
||||
echo "ARCH: $ARCHS"
|
||||
|
||||
if [[ $CONFIGURATION == "Release" ]]
|
||||
then
|
||||
mode="--release"
|
||||
fi
|
||||
|
||||
if [[ $ARCHS == "x86_64" ]]
|
||||
then
|
||||
arch="x86_64"
|
||||
elif [[ $ARCHS == "arm64" ]]
|
||||
then
|
||||
arch="aarch64"
|
||||
fi
|
||||
|
||||
if [[ $SDK_NAME == *"iphoneos"* ]]
|
||||
then
|
||||
os_type="ios"
|
||||
elif [[ $SDK_NAME == *"macos"* ]]
|
||||
then
|
||||
os_type="darwin"
|
||||
elif [[ $SDK_NAME == *"iphonesimulator"* ]]
|
||||
then
|
||||
os_type="ios"
|
||||
if [[ $ARCHS == "arm64" ]]
|
||||
then
|
||||
environment_type="sim"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
triplet="$arch-$vendor-$os_type"
|
||||
|
||||
if [ -n "$environment_type" ]
|
||||
then
|
||||
triplet="$triplet-$environment_type"
|
||||
fi
|
||||
|
||||
echo "Mode: $mode"
|
||||
echo "Triplet: $triplet"
|
||||
echo "Shell: $SHELL"
|
||||
|
||||
cmd="export HOME=$HOME && . $HOME/.cargo/env && cargo build -p apple $mode --target $triplet --lib"
|
||||
|
||||
echo "Command: $cmd"
|
||||
|
||||
env -i /bin/bash -c "$cmd"
|
||||
```
|
||||
|
||||
### Build Settings
|
||||
|
||||
{{#include figures/diff-xcode-project-build-settings.html}}
|
||||
|
||||
Explanations for the settings:
|
||||
|
||||
* `BUILD_LIBRARY_FOR_DISTRIBUTION`: Define that this is a library (effect unknown to me)
|
||||
* `CODE_SIGN_STYLE`: The framework is not signed
|
||||
* `DEVELOPMENT_TEAM`: No development team is set
|
||||
* `LIBRARY_SEARCH_PATHS[sdk=x][arch=y]`: We set the path for the `libmaplibre_apple.a` lies
|
||||
* `MACH_O_TYPE` / `SKIP_INSTALL`: If this is not set to `staticlib` and `NO`, then the `libmaplibre_apple.a` binary is not included in the final framework xcarchive.
|
||||
* `SUPPORTED_PLATFORMS`: Explicitly says that this library works on any platform.
|
||||
* `SUPPORTS_MACCATALYST`: Explicitly says that this library works on Mac Catalyst.
|
||||
|
||||
The same settings are done for Release and Debug.
|
||||
|
||||
## xcframework packaging
|
||||
|
||||
Creating a xcframework is usually quite straight forward. Just execute the following:
|
||||
|
||||
```bash
|
||||
xargs xcodebuild -create-xcframework -framework ./a -framework ./b -output out.xcframework
|
||||
```
|
||||
|
||||
Unfortunately, it is not possible to bundle some frameworks together like:
|
||||
|
||||
* macOS-arm64 and macOS-x86_64
|
||||
|
||||
In order to package these architectures and platforms together a fat binary needs to be created using the `lipo` tool.
|
||||
This means from two frameworks we create a unified framework with a fat binary.
|
||||
There are two important steps:
|
||||
|
||||
1. Create a fat binary using `lipo -create binA binB -output binfat`
|
||||
2. Copy for example the arm64 framework and add the `.swiftmodule` definitions from the x86_64 framework
|
||||
|
||||
## Single UIApplication
|
||||
|
||||
Right now `winit` only allows the usage of a `UIApplication`. This means the application needs to run in fullscreen.
|
||||
[Tracking Issue](https://github.com/maplibre/maplibre-rs/issues/28)
|
||||
|
||||
## Example App
|
||||
|
||||
The following settings are important for the example application within the XCode project.
|
||||
|
||||
### Info Plist for Applications
|
||||
|
||||
{{#include figures/diff-xcode-project-info-plist.html}}
|
||||
|
||||
* The `INFOPLIST_KEY_UIApplicationSceneManifest_Generation` needs to be unset. Else the application screen is just black.
|
||||
|
||||
### Files & Assets
|
||||
|
||||
{{#include figures/diff-xcode-project-assets.html}}
|
||||
|
||||
* The example/demo application within the XCode project references the `maplibre_rs.framework`. Some default files have
|
||||
been removed.
|
||||
|
||||
### MacOS Entitlements
|
||||
|
||||
{{#include figures/diff-macOS-entitlements.html}}
|
||||
|
||||
* On macOS one needs to allow network access via `com.apple.security.network.client`
|
||||
@ -0,0 +1,171 @@
|
||||
<div id="d2h-648583" class="d2h-file-wrapper" data-lang="entitlements">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">xcode/macOS/macOS.entitlements</span>
|
||||
<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -0,0 +1,12 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">1</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"><?xml version="1.0" encoding="UTF-8"?></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">2</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">3</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"><plist version="1.0"></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">4</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"><dict></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">5</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <key>com.apple.security.app-sandbox</key></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">6</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <true/></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">7</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <key>com.apple.security.files.user-selected.read-only</key></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">8</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <true/></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">9</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <key>com.apple.security.network.client</key></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">10</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <true/></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">11</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"></dict></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">12</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"></plist></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,87 @@
|
||||
<div id="d2h-374920" class="d2h-file-wrapper" data-lang="swift">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">xcode/maplibre-rs/maplibre.swift</span>
|
||||
<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -0,0 +1,5 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">1</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn">public class MapLibre {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">2</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> public static func start() {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">3</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> maplibre_apple_main();</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">4</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> }</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">5</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn">}</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,519 @@
|
||||
<div class="d2h-file-wrapper" data-lang="pbxproj">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">{diff/maplibre-rs → xcode}/maplibre-rs.xcodeproj/project.pbxproj</span>
|
||||
<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -7,93 +7,110 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">7</div>
|
||||
<div class="line-num2">7</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> objects = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">8</div>
|
||||
<div class="line-num2">8</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"><br></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">9</div>
|
||||
<div class="line-num2">9</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* Begin PBXBuildFile section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">10</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E828132EA6003BD2A5</del> /* maplibre_rs.h in Headers */ = {isa = PBXBuildFile; fileRef = <del>0BE452E728132EA6003BD2A5</del> /* maplibre_rs.h */; settings = {ATTRIBUTES = (Public, ); }; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">11</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452FC28132EB5003BD2A5</del> /* exampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = <del>0BE452ED28132EB5003BD2A5</del> /* exampleApp.swift */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">12</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452FD28132EB5003BD2A5</del> /* exampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = <del>0BE452ED28132EB5003BD2A5</del> /* exampleApp.swift */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">13</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452FE28132EB5003BD2A5</del> /* <del>ContentView</del>.<del>swift</del> in <del>Sources</del> */ = {isa = PBXBuildFile; fileRef = <del>0BE452EE28132EB5003BD2A5</del> /* <del>ContentView</del>.<del>swift</del> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">14</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452FF28132EB5003BD2A5</del> /* <del>ContentView</del>.<del>swift</del> in <del>Sources</del> */ = {isa = PBXBuildFile; fileRef = <del>0BE452EE28132EB5003BD2A5</del> /* <del>ContentView</del>.<del>swift</del> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">15</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE4530028132EB5003BD2A5</del> /* <del>Assets</del>.<del>xcassets</del> in <del>Resources</del> */ = {isa = PBXBuildFile; fileRef = <del>0BE452EF28132EB5003BD2A5</del> /* <del>Assets</del>.<del>xcassets</del> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">16</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE4530128132EB5003BD2A5</del> /* <del>Assets</del>.<del>xcassets</del> in <del>Resources</del> */ = {isa = PBXBuildFile; fileRef = <del>0BE452EF28132EB5003BD2A5</del> /* <del>Assets</del>.<del>xcassets</del> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">10</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D56F2812903700906D21</ins> /* maplibre_rs.h in Headers */ = {isa = PBXBuildFile; fileRef = <ins>0B85D56E2812903700906D21</ins> /* maplibre_rs.h */; settings = {ATTRIBUTES = (Public, ); }; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">11</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D586281290F800906D21</ins> /* exampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = <ins>0B85D577281290F800906D21</ins> /* exampleApp.swift */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">12</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D587281290F800906D21</ins> /* exampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = <ins>0B85D577281290F800906D21</ins> /* exampleApp.swift */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">13</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D58A281290F800906D21</ins> /* <ins>Assets</ins>.<ins>xcassets</ins> in <ins>Resources</ins> */ = {isa = PBXBuildFile; fileRef = <ins>0B85D579281290F800906D21</ins> /* <ins>Assets</ins>.<ins>xcassets</ins> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">14</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D58B281290F800906D21</ins> /* <ins>Assets</ins>.<ins>xcassets</ins> in <ins>Resources</ins> */ = {isa = PBXBuildFile; fileRef = <ins>0B85D579281290F800906D21</ins> /* <ins>Assets</ins>.<ins>xcassets</ins> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">15</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5952812913700906D21</ins> /* <ins>maplibre</ins>.<ins>swift</ins> in <ins>Sources</ins> */ = {isa = PBXBuildFile; fileRef = <ins>0B85D5942812913700906D21</ins> /* <ins>maplibre</ins>.<ins>swift</ins> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">16</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D596281291A400906D21</ins> /* <ins>maplibre_rs</ins>.<ins>framework</ins> in <ins>Frameworks</ins> */ = {isa = PBXBuildFile; fileRef = <ins>0B85D56B2812903700906D21</ins> /* <ins>maplibre_rs</ins>.<ins>framework</ins> */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">17</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D599281291A700906D21 /* maplibre_rs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B85D56B2812903700906D21 /* maplibre_rs.framework */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">18</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D5A42812991100906D21 /* libmaplibre_apple.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B85D5A32812987B00906D21 /* libmaplibre_apple.a */; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">17</div>
|
||||
<div class="line-num2">19</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* End PBXBuildFile section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">18</div>
|
||||
<div class="line-num2">20</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"><br></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">19</div>
|
||||
<div class="line-num2">21</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* Begin PBXFileReference section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">20</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E428132EA6003BD2A5</del> /* maplibre_rs.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = maplibre_rs.framework; sourceTree = BUILT_PRODUCTS_DIR; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">21</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E728132EA6003BD2A5</del> /* maplibre_rs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maplibre_rs.h; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">22</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452ED28132EB5003BD2A5</del> /* exampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = exampleApp.swift; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">23</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452EE28132EB5003BD2A5</del> /* <del>ContentView</del>.<del>swift</del> */ = {isa = PBXFileReference; lastKnownFileType = <del>sourcecode</del>.<del>swift</del>; path = <del>ContentView</del>.<del>swift</del>; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">24</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452EF28132EB5003BD2A5</del> /* <del>Assets</del>.<del>xcassets</del> */ = {isa = PBXFileReference; <del>lastKnownFileType</del> = <del>folder</del>.<del>assetcatalog</del>; path = <del>Assets</del>.<del>xcassets</del>; sourceTree = <del>"<group>"</del>; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">25</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452F428132EB5003BD2A5</del> /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">26</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452F928132EB5003BD2A5</del> /* <del>example</del>.<del>app</del> */ = {isa = PBXFileReference; <del>explicitFileType</del> = <del>wrapper</del>.<del>application</del>; <del>includeInIndex = 0; </del>path = <del>example</del>.<del>app</del>; sourceTree = <del>BUILT_PRODUCTS_DIR</del>; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">27</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452FB28132EB5003BD2A5</del> /* <del>macOS</del>.<del>entitlements</del> */ = {isa = PBXFileReference; lastKnownFileType = <del>text</del>.<del>plist.entitlements</del>; path = <del>macOS</del>.<del>entitlements</del>; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">22</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D56B2812903700906D21</ins> /* maplibre_rs.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = maplibre_rs.framework; sourceTree = BUILT_PRODUCTS_DIR; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">23</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D56E2812903700906D21</ins> /* maplibre_rs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maplibre_rs.h; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">24</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D577281290F800906D21</ins> /* exampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = exampleApp.swift; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">25</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D579281290F800906D21</ins> /* <ins>Assets</ins>.<ins>xcassets</ins> */ = {isa = PBXFileReference; lastKnownFileType = <ins>folder</ins>.<ins>assetcatalog</ins>; path = <ins>Assets</ins>.<ins>xcassets</ins>; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">26</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D57E281290F800906D21</ins> /* <ins>example</ins>.<ins>app</ins> */ = {isa = PBXFileReference; <ins>explicitFileType</ins> = <ins>wrapper</ins>.<ins>application</ins>; <ins>includeInIndex = 0; </ins>path = <ins>example</ins>.<ins>app</ins>; sourceTree = <ins>BUILT_PRODUCTS_DIR</ins>; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">27</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D583281290F800906D21</ins> /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">28</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D585281290F800906D21</ins> /* <ins>macOS</ins>.<ins>entitlements</ins> */ = {isa = PBXFileReference; <ins>lastKnownFileType</ins> = <ins>text</ins>.<ins>plist.entitlements</ins>; path = <ins>macOS</ins>.<ins>entitlements</ins>; sourceTree = <ins>"<group>"</ins>; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">29</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5942812913700906D21</ins> /* <ins>maplibre</ins>.<ins>swift</ins> */ = {isa = PBXFileReference; lastKnownFileType = <ins>sourcecode</ins>.<ins>swift</ins>; path = <ins>maplibre</ins>.<ins>swift</ins>; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">30</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D5A32812987B00906D21 /* libmaplibre_apple.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libmaplibre_apple.a; sourceTree = SOURCE_ROOT; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">31</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0BE452D62812EEA8003BD2A5 /* example--iOS--Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "example--iOS--Info.plist"; sourceTree = "<group>"; };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx d2h-info">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">32</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* End PBXFileReference section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,514 @@
|
||||
|
||||
<div class="d2h-file-wrapper" data-lang="pbxproj">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">{diff/maplibre-rs → xcode}/maplibre-rs.xcodeproj/project.pbxproj</span>
|
||||
<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">114</div>
|
||||
<div class="line-num2">131</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* Begin PBXNativeTarget section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">115</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E328132EA6003BD2A5</del> /* maplibre-rs */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">132</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D56A2812903700906D21</ins> /* maplibre-rs */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">116</div>
|
||||
<div class="line-num2">133</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = PBXNativeTarget;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">117</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> buildConfigurationList = <del>0BE452E928132EA6003BD2A5</del> /* Build configuration list for PBXNativeTarget "maplibre-rs" */;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">134</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> buildConfigurationList = <ins>0B85D5702812903700906D21</ins> /* Build configuration list for PBXNativeTarget "maplibre-rs" */;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">118</div>
|
||||
<div class="line-num2">135</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildPhases = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">119</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452DF28132EA6003BD2A5</del> /* Headers */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">120</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E028132EA6003BD2A5</del> /* Sources */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">121</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E128132EA6003BD2A5</del> /* Frameworks */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">122</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E228132EA6003BD2A5</del> /* Resources */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">136</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5662812903700906D21</ins> /* Headers */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">137</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5672812903700906D21</ins> /* Sources */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">138</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5682812903700906D21</ins> /* Frameworks */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">139</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5692812903700906D21</ins> /* Resources */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">140</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0BE452D72812EFC1003BD2A5 /* Cargo Build */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">229</div>
|
||||
<div class="line-num2">248</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">230</div>
|
||||
<div class="line-num2">249</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> runOnlyForDeploymentPostprocessing = 0;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">231</div>
|
||||
<div class="line-num2">250</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">232</div>
|
||||
<div class="line-num2">251</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* End PBXResourcesBuildPhase section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">233</div>
|
||||
<div class="line-num2">252</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"><br></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">253</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn">/* Begin PBXShellScriptBuildPhase section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">254</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0BE452D72812EFC1003BD2A5 /* Cargo Build */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">255</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> isa = PBXShellScriptBuildPhase;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">256</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> buildActionMask = 2147483647;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">257</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> files = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">258</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">259</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> inputFileListPaths = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">260</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">261</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> inputPaths = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">262</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">263</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> name = "Cargo Build";</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">264</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> outputFileListPaths = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">265</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">266</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> outputPaths = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">267</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">268</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> runOnlyForDeploymentPostprocessing = 0;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">269</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> shellPath = /bin/bash;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">270</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> shellScript = ". \"$HOME/.cargo/env\"\n\narch=\"unknown\"\nvendor=\"apple\"\nos_type=\"unknown\"\nenvironment_type=\"\"\n\nmode=\"\"\n\necho \"ARCH: $ARCHS\"\n\nif [[ $CONFIGURATION == \"Release\" ]]\nthen\n mode=\"--release\"\nfi\n\nif [[ $ARCHS == \"x86_64\" ]]\nthen\n arch=\"x86_64\"\nelif [[ $ARCHS == \"arm64\" ]]\nthen\n arch=\"aarch64\"\nfi\n\nif [[ $SDK_NAME == *\"iphoneos\"* ]]\nthen\n os_type=\"ios\"\nelif [[ $SDK_NAME == *\"macos\"* ]]\nthen\n os_type=\"darwin\"\nelif [[ $SDK_NAME == *\"iphonesimulator\"* ]]\nthen\n os_type=\"ios\"\n environment_type=\"sim\"\nfi\n\n\ntriplet=\"$arch-$vendor-$os_type\"\n\nif [ -n \"$environment_type\" ]\nthen\n triplet=\"$triplet-$environment_type\"\nfi\n\necho \"$mode\"\necho \"$triplet\"\n\nenv -i zsh -c \"cargo build -p maplibre-apple $mode --target $triplet --lib\"\n\n";</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">271</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">272</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn">/* End PBXShellScriptBuildPhase section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,381 @@
|
||||
<div class="d2h-file-wrapper" data-lang="pbxproj">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">{diff/maplibre-rs → xcode}/maplibre-rs.xcodeproj/project.pbxproj</span>
|
||||
<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">29</div>
|
||||
<div class="line-num2">33</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"><br></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">30</div>
|
||||
<div class="line-num2">34</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* Begin PBXFrameworksBuildPhase section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">31</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452E128132EA6003BD2A5</del> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">35</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D5682812903700906D21</ins> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">32</div>
|
||||
<div class="line-num2">36</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = PBXFrameworksBuildPhase;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">33</div>
|
||||
<div class="line-num2">37</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildActionMask = 2147483647;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">34</div>
|
||||
<div class="line-num2">38</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> files = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">39</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D5A42812991100906D21 /* libmaplibre_apple.a in Frameworks */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">35</div>
|
||||
<div class="line-num2">40</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">36</div>
|
||||
<div class="line-num2">41</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> runOnlyForDeploymentPostprocessing = 0;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">37</div>
|
||||
<div class="line-num2">42</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">38</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452F128132EB5003BD2A5</del> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">43</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D57B281290F800906D21</ins> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">39</div>
|
||||
<div class="line-num2">44</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = PBXFrameworksBuildPhase;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">40</div>
|
||||
<div class="line-num2">45</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildActionMask = 2147483647;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">41</div>
|
||||
<div class="line-num2">46</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> files = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">47</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D596281291A400906D21 /* maplibre_rs.framework in Frameworks */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">42</div>
|
||||
<div class="line-num2">48</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">43</div>
|
||||
<div class="line-num2">49</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> runOnlyForDeploymentPostprocessing = 0;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">44</div>
|
||||
<div class="line-num2">50</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">45</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE452F628132EB5003BD2A5</del> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">51</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D580281290F800906D21</ins> /* Frameworks */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">46</div>
|
||||
<div class="line-num2">52</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = PBXFrameworksBuildPhase;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">47</div>
|
||||
<div class="line-num2">53</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildActionMask = 2147483647;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">48</div>
|
||||
<div class="line-num2">54</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> files = (</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">55</div>
|
||||
</td>
|
||||
<td class="d2h-ins">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> 0B85D599281291A700906D21 /* maplibre_rs.framework in Frameworks */,</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">49</div>
|
||||
<div class="line-num2">56</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> );</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">50</div>
|
||||
<div class="line-num2">57</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> runOnlyForDeploymentPostprocessing = 0;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">51</div>
|
||||
<div class="line-num2">58</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">59</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn">/* End PBXFrameworksBuildPhase section */</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,393 @@
|
||||
<div class="d2h-file-wrapper" data-lang="pbxproj">
|
||||
<div class="d2h-file-header">
|
||||
<span class="d2h-file-name-wrapper">
|
||||
<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">
|
||||
<path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>
|
||||
</svg> <span class="d2h-file-name">{diff/maplibre-rs → xcode}/maplibre-rs.xcodeproj/project.pbxproj</span>
|
||||
<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span></span>
|
||||
<label class="d2h-file-collapse">
|
||||
<input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">
|
||||
Viewed
|
||||
</label>
|
||||
</div>
|
||||
<div class="d2h-file-diff">
|
||||
<div class="d2h-code-wrapper">
|
||||
<table class="d2h-diff-table">
|
||||
<tbody class="d2h-diff-tbody">
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">435</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE4530328132EB5003BD2A5</del> /* Debug */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">511</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D58D281290F800906D21</ins> /* Debug */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">436</div>
|
||||
<div class="line-num2">512</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = XCBuildConfiguration;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">437</div>
|
||||
<div class="line-num2">513</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildSettings = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">438</div>
|
||||
<div class="line-num2">514</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> ALWAYS_SEARCH_USER_PATHS = NO;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -489,7 +565,7 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">489</div>
|
||||
<div class="line-num2">565</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GCC_WARN_UNUSED_FUNCTION = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">490</div>
|
||||
<div class="line-num2">566</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GCC_WARN_UNUSED_VARIABLE = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">491</div>
|
||||
<div class="line-num2">567</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GENERATE_INFOPLIST_FILE = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">492</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>INFOPLIST_KEY_UIApplicationSceneManifest_Generation</del> = <del>YES</del>;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">568</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>INFOPLIST_FILE</ins> = <ins>"example--iOS--Info.plist"</ins>;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">493</div>
|
||||
<div class="line-num2">569</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">494</div>
|
||||
<div class="line-num2">570</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UILaunchScreen_Generation = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">495</div>
|
||||
<div class="line-num2">571</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -514,7 +590,7 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">514</div>
|
||||
<div class="line-num2">590</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">515</div>
|
||||
<div class="line-num2">591</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> name = Debug;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">516</div>
|
||||
<div class="line-num2">592</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> };</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">517</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>0BE4530428132EB5003BD2A5</del> /* Release */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">593</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>0B85D58E281290F800906D21</ins> /* Release */ = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">518</div>
|
||||
<div class="line-num2">594</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> isa = XCBuildConfiguration;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">519</div>
|
||||
<div class="line-num2">595</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> buildSettings = {</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">520</div>
|
||||
<div class="line-num2">596</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> ALWAYS_SEARCH_USER_PATHS = NO;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -565,7 +641,7 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">565</div>
|
||||
<div class="line-num2">641</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GCC_WARN_UNUSED_FUNCTION = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">566</div>
|
||||
<div class="line-num2">642</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GCC_WARN_UNUSED_VARIABLE = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">567</div>
|
||||
<div class="line-num2">643</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> GENERATE_INFOPLIST_FILE = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-del d2h-change">
|
||||
<div class="line-num1">568</div>
|
||||
<div class="line-num2"></div>
|
||||
</td>
|
||||
<td class="d2h-del d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">-</span>
|
||||
<span class="d2h-code-line-ctn"> <del>INFOPLIST_KEY_UIApplicationSceneManifest_Generation</del> = <del>YES</del>;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-ins d2h-change">
|
||||
<div class="line-num1"></div>
|
||||
<div class="line-num2">644</div>
|
||||
</td>
|
||||
<td class="d2h-ins d2h-change">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix">+</span>
|
||||
<span class="d2h-code-line-ctn"> <ins>INFOPLIST_FILE</ins> = <ins>"example--iOS--Info.plist"</ins>;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">569</div>
|
||||
<div class="line-num2">645</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">570</div>
|
||||
<div class="line-num2">646</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UILaunchScreen_Generation = YES;</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-cntx">
|
||||
<div class="line-num1">571</div>
|
||||
<div class="line-num2">647</div>
|
||||
</td>
|
||||
<td class="d2h-cntx">
|
||||
<div class="d2h-code-line">
|
||||
<span class="d2h-code-line-prefix"> </span>
|
||||
<span class="d2h-code-line-ctn"> INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="d2h-code-linenumber d2h-info"></td>
|
||||
<td class="d2h-info">
|
||||
<div class="d2h-code-line">@@ -590,7 +666,7 @@</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
280
src/development-documents/library-packaging/web.md
Normal file
@ -0,0 +1,280 @@
|
||||
# Web
|
||||
|
||||
This document describes issues and challenges when packaging maplibre-rs as a npm package.
|
||||
|
||||
## Required Formats
|
||||
|
||||
### ESM
|
||||
|
||||
The ESM module format is the standard nowadays which should be followed. If a JS bundler encounters an ESM
|
||||
module it can resolve WebAssembly files or WebWorkers dynamically.
|
||||
The following syntax is used to resolve referenced WebWorkers:
|
||||
|
||||
```ts
|
||||
new Worker(new URL("./pool.worker.ts", import.meta.url), {
|
||||
type: 'module'
|
||||
});
|
||||
```
|
||||
|
||||
Similarly, the following works:
|
||||
|
||||
```ts
|
||||
new URL('index_bg.wasm', import.meta.url);
|
||||
```
|
||||
|
||||
### IIFE (immediately-invoked function expression)
|
||||
|
||||
> This format is used when including maplibre-rs in a `<script>` tag. The library is "written" onto the window/global
|
||||
> object. This allows quick prototyping/playgrounds/experiments using maplibre-rs.
|
||||
|
||||
In order to support this we need to create a bundle which works on any modern browser. Additionally, a WASM file and
|
||||
WebWorker needs to be deployed at a predictable path, because there is no bundler active which manages assets. Users of
|
||||
these libraries have to specify where WASM or non-inlined WebWorkers are located.
|
||||
|
||||
Both assets could be inlined theoretically. This is common for WebWorkers, but not for WASM files.
|
||||
|
||||
### UMD
|
||||
|
||||
> UMD modules are needed when creating a library which should run in Node as well as browsers. This is not a usecase
|
||||
> for maplibre-rs. If we support node, then we probably would ship a separate package called "maplibre-rs-node" which
|
||||
> bundles to CJS directly.
|
||||
|
||||
### CJS/CommonJS
|
||||
|
||||
> Not needed for the browser build of maplibre-rs, possibly needed when supporting Node
|
||||
|
||||
With a CommonJS module its is not possible for bundlers to dynamically resolve WebWorkers or WASM files.
|
||||
|
||||
The `import.meta.url` token can not exist in a CommonJS module. Therefore, bundlers which encounter a CommonJS module
|
||||
have to use a different mechanism of resolving files.
|
||||
|
||||
Generally, we do not need to support CommonJS, because we are not targeting Node with maplibre-rs. It's properly good to
|
||||
support it as a fallback though, for bundlers which can not deal with ESM modules yet.
|
||||
This is for example true for test runners like Jest which require that dependencies are available as CJS module.
|
||||
|
||||
## wasm-pack output
|
||||
|
||||
wasm-pack can output [multiple formats](https://rustwasm.github.io/docs/wasm-pack/commands/build.html#target). The `web`
|
||||
and `bundler` outputs offer the most modular modules.
|
||||
Unfortunately, the
|
||||
function [wasm_bindgen::module()](https://docs.rs/wasm-bindgen/0.2.80/src/wasm_bindgen/lib.rs.html#1208-1217)
|
||||
is only supported in `web` and `no-modules`. We currently are using this in order to send loaded instances
|
||||
of `WebAssembly.Module` to WebWorkers. `nodejs` should not be used because MapLibre does not target Node.
|
||||
Therefore, we should stick to the `web` output format.
|
||||
|
||||
## Required Features
|
||||
|
||||
* WASM Bundling: Make the WASM binary available to users of the maplibre-rs library
|
||||
* WebWorker Bundling: Make the WebWorker available to users of the maplibre-rs library. This could also be achived by inlining.
|
||||
* WebWorker Inlining: Inline the WebWorker bundle in the library bundle as a string.
|
||||
* Predictable Paths: Without predictable paths, it's difficult for users to reference the wasm file directly from the `node_modules` directory if requried.
|
||||
|
||||
|
||||
## Bundler Feature Comparison
|
||||
|
||||
| Bundler | *ESM* | *IIFE* | CJS | UMD | *WebWorker Inlining* | Web Worker Bundling | *WASM Bundling* | *Predictable Paths* | Inlining Environment Variables |
|
||||
|---------------|-------|--------|-----|-----|----------------------|---------------------|-----------------|---------------------|--------------------------------|
|
||||
| Babel 1) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
|
||||
| TypeScript 1) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
|
||||
| Webpack | ❌ 4) | ❓ | ❌ | ❓ | ❌ 2) | ✅ | ✅ | ❓ | ✅ |
|
||||
| Parcel | ✅ | ❌ | ✅ | ❌ | 🛠️ 3) | ✅ | ✅ | ❌ 5) | ✅ |
|
||||
| ESBuild | ✅ | ✅ | ✅ | ❌ | ✅ 6) | ❓ | ✅ 6) | ✅ | ✅ |
|
||||
| Rollup | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ✅ |
|
||||
|
||||
Features in ***italic***s are required for maplibre-rs.
|
||||
|
||||
> 1) Technically not a bundler but can be used to emit ES modules
|
||||
> 2) Was Supported in Webpack 4, but currently is not supported
|
||||
> 3) https://github.com/parcel-bundler/parcel/issues/8004
|
||||
> 4) As of the time of writing Webpack can not output ESM libraries
|
||||
> 5) Plugins exist, but they don't work reliably
|
||||
> 6) Plugins exist, and work reliably
|
||||
|
||||
### ESBuild
|
||||
|
||||
ESBuild supports CJS, ESM and IIFI modules equally well. Plugins exist for WebWorker inlining and resolving assets
|
||||
through `import.meta.url`. The plugin quality seems to be superior compared to Parcel. It is also very fast compared to
|
||||
all other bundlers.
|
||||
|
||||
* IIFI: The esbuild bundler translates to `new URL('index_bg.wasm', import.meta.url);` to
|
||||
```js
|
||||
var __currentScriptUrl__ = document.currentScript && document.currentScript.src || document.baseURI;
|
||||
new URL("./assets/index_bg.wasm?emit=file", __currentScriptUrl__);
|
||||
```
|
||||
|
||||
See config in `web/lib/build.mjs` for an example usage.
|
||||
|
||||
### Babel & TypeScript
|
||||
|
||||
Babel and TypeScript both can produce ESM modules, but they **fail with transforming references within the source code**
|
||||
like `new URL("./pool.worker.ts", import.meta.url)`. There exist some Babel plugins, but none of them is stable.
|
||||
Therefore, we actually need a proper bundler which supports outputting ESM modules.
|
||||
The only stable solution to this is Parcel. Parcel also has good documentation around the bundling of WebWorkers.
|
||||
|
||||
### WebPack
|
||||
|
||||
WebPack supports older module formats like CommonJS or UMD very well. It falls short when bundling the format ESM
|
||||
format which is not yet stable. It also does not support inlining WebWorkers in version 5. The wasm-pack plugin
|
||||
for WebPack makes including Cargo projects easy.
|
||||
|
||||
* CJS: Webpack translates `new URL('index_bg.wasm', import.meta.url);` to something that is equivalent to `'./index_bg.wasm'`
|
||||
. It just expects that assets are resolvable from the current file.
|
||||
|
||||
Example scripts for `package.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"webpack": "webpack --mode=development",
|
||||
"webpack-webgl": "npm run build -- --env webgl",
|
||||
"webpack-production": "webpack --mode=production",
|
||||
"webpack-webgl-production": "npm run production-build -- --env webgl"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Example config:
|
||||
|
||||
```js
|
||||
const path = require("path");
|
||||
const webpack = require("webpack");
|
||||
const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin");
|
||||
|
||||
let dist = path.join(__dirname, 'dist/maplibre-rs');
|
||||
module.exports = (env) => ({
|
||||
mode: "development",
|
||||
entry: "./src/index.ts",
|
||||
experiments: {
|
||||
syncWebAssembly: true,
|
||||
},
|
||||
performance: {
|
||||
maxEntrypointSize: 400000,
|
||||
maxAssetSize: 400000000,
|
||||
},
|
||||
output: {
|
||||
path: dist,
|
||||
filename: "maplibre-rs.js",
|
||||
library: {
|
||||
name: 'maplibre_rs',
|
||||
type: 'umd',
|
||||
},
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.ts$/,
|
||||
exclude: /node_modules/,
|
||||
use: [
|
||||
{
|
||||
loader: 'ts-loader',
|
||||
options: {}
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.ts', '.js'],
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.WEBGL': !!env.webgl
|
||||
}),
|
||||
new WasmPackPlugin({
|
||||
crateDirectory: path.resolve(__dirname, '../'),
|
||||
|
||||
// Check https://rustwasm.github.io/wasm-pack/book/commands/build.html for
|
||||
// the available set of arguments.
|
||||
//
|
||||
// Optional space delimited arguments to appear before the wasm-pack
|
||||
// command. Default arguments are `--verbose`.
|
||||
//args: '--log-level warn',
|
||||
// Default arguments are `--typescript --target browser --mode normal`.
|
||||
extraArgs: ` --target web -- . -Z build-std=std,panic_abort ${env.webgl ? '--features web-webgl' : ''} ${env.tracing ? '--features trace' : ''}`,
|
||||
|
||||
// Optional array of absolute paths to directories, changes to which
|
||||
// will trigger the build.
|
||||
// watchDirectories: [
|
||||
// path.resolve(__dirname, "another-crate/src")
|
||||
// ],
|
||||
|
||||
// The same as the `--out-dir` option for `wasm-pack`
|
||||
outDir: path.resolve(__dirname, 'src/wasm-pack'),
|
||||
|
||||
// The same as the `--out-name` option for `wasm-pack`
|
||||
// outName: "index",
|
||||
|
||||
// If defined, `forceWatch` will force activate/deactivate watch mode for
|
||||
// `.rs` files.
|
||||
//
|
||||
// The default (not set) aligns watch mode for `.rs` files to Webpack's
|
||||
// watch mode.
|
||||
// forceWatch: true,
|
||||
|
||||
// If defined, `forceMode` will force the compilation mode for `wasm-pack`
|
||||
//
|
||||
// Possible values are `development` and `production`.
|
||||
//
|
||||
// the mode `development` makes `wasm-pack` build in `debug` mode.
|
||||
// the mode `production` makes `wasm-pack` build in `release` mode.
|
||||
// forceMode: "production",
|
||||
|
||||
// Controls plugin output verbosity, either 'info' or 'error'.
|
||||
// Defaults to 'info'.
|
||||
// pluginLogLevel: 'info'
|
||||
}),
|
||||
]
|
||||
});
|
||||
```
|
||||
|
||||
### Parcel
|
||||
|
||||
Parcel supports CommonJS and ESM modules equally good. The documentation about `import.meta.url` is very good. In other
|
||||
bundlers documentations around this feature is missing. In the latest Parcel version inlining WebWorkers is not working.
|
||||
|
||||
* CJS: The Parcel bundler translates to `new URL('index_bg.wasm', import.meta.url);`
|
||||
to `new URL("index_bg.wasm", "file:" + __filename);`
|
||||
While depending on `file:` and `filename` works for NodeJS, it is unsupported in the browser.
|
||||
|
||||
Example scripts for `package.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"parcel": "npm run clean && npm run wasm-pack && WEBGL=false parcel build --no-cache src/index.ts",
|
||||
"parcel-webgl": "npm run clean && FEATURES=web-webgl npm run wasm-pack && WEBGL=true parcel build --no-cache src/index.ts"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Example config in `package.json:
|
||||
|
||||
```json
|
||||
{
|
||||
"module": "dist/parcel-esm/module.js",
|
||||
"main": "dist/parcel-cjs/main.js",
|
||||
"types": "dist/parcel/types.d.ts",
|
||||
"targets": {
|
||||
"main": {
|
||||
"distDir": "./dist/parcel-cjs",
|
||||
"context": "browser",
|
||||
"outputFormat": "commonjs"
|
||||
},
|
||||
"module": {
|
||||
"distDir": "./dist/parcel-esm",
|
||||
"context": "browser",
|
||||
"outputFormat": "esmodule"
|
||||
}
|
||||
},
|
||||
"@parcel/transformer-js": {
|
||||
"inlineFS": false,
|
||||
"inlineEnvironment": [
|
||||
"WEBGL"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Rollup
|
||||
|
||||
Not yet evaluated
|
||||
5
src/development-documents/stencil-masking.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Stencil Masking
|
||||
|
||||
The following diagram shows a method which has been used in the beginning of maplibre-rs. It is not used currently.
|
||||
|
||||

|
||||
14
src/development-guide/debugging.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Debugging
|
||||
|
||||
* log crate
|
||||
|
||||
|
||||
|
||||
## GPU Debugging
|
||||
|
||||
* For WebGL there is SpectorJS is enabled by default right now. For debugging on a desktop environment you can use
|
||||
[RenderDoc](https://renderdoc.org/).
|
||||
|
||||
## Frame Profiling
|
||||
|
||||
* tracing crate
|
||||
118
src/development-guide/how-to-run.md
Normal file
@ -0,0 +1,118 @@
|
||||
# Running maplibre-rs demos on various platforms
|
||||
|
||||
During development, you will want to run the maplibre demos on your local machine to test out your changes.
|
||||
There are multiple demos of maplibre-rs for different targets. Some targets have prerequisites
|
||||
depending on your operating system.
|
||||
|
||||
* **maplibre-demo** - targets Windows, MacOS and Linux, it is built directly with cargo.
|
||||
* **apple** - targets iOS and MacOS and relies on the xcode IDE.
|
||||
* **android** - targets Android devices and builds in Android Studio.
|
||||
* **web** - targets the web using a WASM binary.
|
||||
* **maplibre-headless** - *TBD*
|
||||
|
||||
All the targets below require you to install [rustup](https://rustup.rs/) to manage your Rust toolchain.
|
||||
|
||||
> __Note__: Make sure you have selected the right toolchain target within rustup. You can use `rustup show` to see your
|
||||
> active toolchain. If you want to change the target of the build manually, use the cargo `--target` parameter.
|
||||
|
||||
## Maplibre-demo
|
||||
|
||||
### Linux/MacOS
|
||||
|
||||
The build for desktop is very simple, you just have to run the following command from the root of the
|
||||
maplibre-rs project:
|
||||
|
||||
```bash
|
||||
cargo run -p maplibre-demo
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Windows has two additional prerequisites to be able to run. You will need CMake, Visual Studio C++ build tools and the
|
||||
sqlite3 library.
|
||||
|
||||
Install [CMake](https://cmake.org/download/) and add it to your path environment variables.
|
||||
|
||||
For the C++ build tools, download the [Visual Studio 2022 Build tools](https://visualstudio.microsoft.com/downloads/)
|
||||
from the Microsoft website. After the download, while installing the Build tools, make sure that you select the
|
||||
*C++ build tools*.
|
||||
|
||||
To install sqlite3 you need to build the sqlite3.lib manually with the following
|
||||
[steps](https://gist.github.com/zeljic/d8b542788b225b1bcb5fce169ee28c55). This will generate a .lib file that
|
||||
you will have to add to the SQLITE3_LIB_DIR environment variable.
|
||||
|
||||
Restart your shell to make sure you are using up-to-date environment variables.
|
||||
|
||||
Finally, the command below should execute successfully:
|
||||
|
||||
```bash
|
||||
cargo run -p maplibre-demo
|
||||
```
|
||||
|
||||
## Android
|
||||
|
||||
Start by installing the
|
||||
[Android Studio IDE](https://developer.android.com/studio?gclid=CjwKCAjwj42UBhAAEiwACIhADmF7uHXnEHGnmOgFnjp0Z6n-TnBvutC5faGA89lwouMIXiR6OXK4hBoCq78QAvD_BwE&gclsrc=aw.ds).
|
||||
|
||||
Make sure the NDK version 23.1.7779620 is installed. The Native Development Kit (NDK) is a set of tools that allows
|
||||
you to use C and C++ code with Android.
|
||||
|
||||
```
|
||||
ANDROID STUDIO -> tools -> SDK manager -> SDK tools -> tick show package details -> ndk (side by side) version 23.1.7779620
|
||||
```
|
||||
|
||||
Open the project within `./android/gradle` and create a new virtual device with the device manager. Minimum SDK version
|
||||
should be 21. This was tested on a x86_64 emulator. Finally, run the demo configuration. It should open your virtual device and
|
||||
run the maplibre-rs Android demo on it. Alternatively you can also run it on your own Android device.
|
||||
|
||||
> Note: If you are building for a x86 Android device, you probably need to install the following target using
|
||||
> rustup with the following command `rustup target add i686-linux-android`.
|
||||
|
||||
> Note: Android is configured to support OpenGL ES 3.1 (This API specification is supported by Android 5.0 (API level 21) and higher).
|
||||
> Your Android device is required to support OpenGL ES 3.1 at least. There are some issues
|
||||
> [here](https://stackoverflow.com/questions/40797975/android-emulator-and-opengl-es3-egl-bad-config) and
|
||||
> [here](https://www.reddit.com/r/Arcore/comments/8squbo/opengl_es_31_is_required_for_android_emulator_to/) that
|
||||
> discuss configuration of Android Studio for OpenGL ES 3.1 support in emulators.
|
||||
|
||||
## Apple
|
||||
|
||||
Apple builds rely on the [XCode IDE](https://apps.apple.com/us/app/xcode/id497799835?ls=1&mt=12).
|
||||
Start by installing XCode and open the project within `./apple/xcode`.
|
||||
|
||||
> Cargo is used in to build the maplibre library in the build phases of the XCode project configuration.
|
||||
|
||||
### iOS
|
||||
|
||||
You can use XCode to run on a iOS Simulator or a real device. Install a simulator in XCode.
|
||||
Version 9 is the minimum version supported theoretically.
|
||||
|
||||
Select the scheme called *example (iOS)* and click on run. This will start the iOS application.
|
||||
|
||||
### MacOS
|
||||
|
||||
As you might have seen in the maplibre-demo section, you can build Unix executables directly with Cargo.
|
||||
In order to build a proper MacOS application (in OSX terminology) you have to use the `./apple/xcode` project.
|
||||
|
||||
Open the project from the folder `./apple/xcode` with XCode. Select the scheme called *example (macOS)* and
|
||||
click on run. This will start the MacOS application.
|
||||
|
||||
> The minimum target OSX version for the MacOS build is defined inside *Build settings -> Deployment -> MacOS deployment target*.
|
||||
> If you are using a lower version of OSX, you will not be able to run the application on your computer.
|
||||
|
||||
## Web (WebGL, WebGPU)
|
||||
|
||||
If you have a browser which already supports a recent version of the WebGPU specification then you can start a
|
||||
development server using the following commands.
|
||||
|
||||
```bash
|
||||
cd web
|
||||
npm run start
|
||||
```
|
||||
|
||||
If you want to run maplibre-rs with WebGL which is supported on every major browser, then you have to use the following
|
||||
command.
|
||||
|
||||
```bash
|
||||
just web-lib esbuild
|
||||
just web-demo start
|
||||
```
|
||||
1
src/development-guide/index.md
Normal file
@ -0,0 +1 @@
|
||||
# Development Guide
|
||||
5
src/introduction.md
Normal file
@ -0,0 +1,5 @@
|
||||

|
||||
|
||||
# Introduction
|
||||
|
||||
maplibre-rs is a portable and performant vector maps renderer.
|
||||
53
src/supported-platforms.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Supported Platforms
|
||||
|
||||
For development the following platforms are recommended:
|
||||
|
||||
* Linux X11/Wayland
|
||||
* MacOS
|
||||
* Latest Firefox Nightly/Chrome Canary with WebGPU (Because WebGPU is a living spec, sometimes a bleeding-edge browser
|
||||
release is required)
|
||||
|
||||
## Short-term Obstacles
|
||||
|
||||
| Platform | Obstacles |
|
||||
|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Linux X11 | |
|
||||
| Linux Wayland | |
|
||||
| Windows | |
|
||||
| MacOS | |
|
||||
| Android | * Unable to get window size before resume |
|
||||
| iOS | * Touches are crashing the app on real devices <br/> * Instanced indices drawing is not supported <br/> * Drawing zero-length indices is prohibited<br/> |
|
||||
| Firefox | * Shared Memory is currently not working because it a parallel web worker corrupts memory |
|
||||
| Chrome | |
|
||||
| Safari | |
|
||||
| Mobile Firefox | |
|
||||
| Mobile Chrome | |
|
||||
| Mobile Safari | |
|
||||
|
||||
## Long-term Goals
|
||||
|
||||
[WebGPU](https://caniuse.com/webgpu) is not enabled by default for all platforms.
|
||||
|
||||
WebGPU Status:
|
||||
|
||||
* [Firefox](https://github.com/gpuweb/gpuweb/wiki/Implementation-Status#firefox-and-servo)
|
||||
* [Chrome](https://chromestatus.com/feature/6213121689518080)
|
||||
* [WebKit](https://webkit.org/status/#specification-webgpu)
|
||||
|
||||
| Platform | Linux & Android | Graphics API | Note |
|
||||
|----------------|-----------------|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Linux X11 | ✅ | Vulkan | |
|
||||
| Linux Wayland | ✅ | Vulkan | |
|
||||
| Windows | ❓ | ❓ | |
|
||||
| MacOS | ✅ | ❓ | |
|
||||
| Android | ✅ | Vulkan/OpenGL ES/Angle | Not tested, but should work on all devices if [Angle](https://github.com/gfx-rs/wgpu/blob/master/README.md#supported-platforms) is used. [Vulkan](https://developer.android.com/about/dashboards) is not yet supported widely. |
|
||||
| iOS | ✅ | Metal | Not tested. |
|
||||
| Firefox | ✅ | WebGL/WebGPU | |
|
||||
| Chrome | ✅ | WebGL/WebGPU | WebGPU is significantly faster because WASM output is smaller. |
|
||||
| Safari | 🛠️ | WebGL/WebGPU | Safari does not yet support [Shared Array Buffer](https://caniuse.com/sharedarraybuffer) |
|
||||
| Mobile Firefox | 🆗 | WebGL/WebGPU | |
|
||||
| Mobile Chrome | 🆗 | WebGL | [WebGPU](https://caniuse.com/webgpu) is not implemented. |
|
||||
| Mobile Safari | 🛠️ | WebGL | [WebGPU](https://caniuse.com/webgpu) is not implemented. Safari does not yet support [Shared Array Buffer](https://caniuse.com/sharedarraybuffer) |
|
||||
|
||||
✅ = First Class Support — 🆗= Best Effort Support — 🛠️ = Unsupported, but support
|
||||
in progress
|
||||
1
src/user-guide/index.md
Normal file
@ -0,0 +1 @@
|
||||
# User Guide
|
||||