Compare commits
954
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bcdf2e4dc | ||
|
|
cd5a720211 | ||
|
|
5cb04946b0 | ||
|
|
c8953c6275 | ||
|
|
e8dc9c9454 | ||
|
|
a0c325681f | ||
|
|
8d3bf19422 | ||
|
|
4477867ef4 | ||
|
|
e696c884dc | ||
|
|
80bcaa49e6 | ||
|
|
0096c1bb02 | ||
|
|
38b37a068d | ||
|
|
0281f31df2 | ||
|
|
40b182c550 | ||
|
|
d1dedc7511 | ||
|
|
04cd9b3eb6 | ||
|
|
de6003367d | ||
|
|
a5f42eeddf | ||
|
|
a8ba041b67 | ||
|
|
e700fc6f34 | ||
|
|
af29d3d257 | ||
|
|
487701a143 | ||
|
|
f32e037c58 | ||
|
|
8bd903dd96 | ||
|
|
560c100484 | ||
|
|
52444d177b | ||
|
|
b4f7ff29ef | ||
|
|
f7c6a5bfa2 | ||
|
|
6fe14f7a6b | ||
|
|
786e5addd8 | ||
|
|
2e9a15f523 | ||
|
|
bb0d2ddc53 | ||
|
|
702fb014a5 | ||
|
|
834eab9457 | ||
|
|
a85da04601 | ||
|
|
414f1c27e4 | ||
|
|
c76e2eb900 | ||
|
|
c523e15302 | ||
|
|
2dc8de295d | ||
|
|
d645fd6327 | ||
|
|
219a7f3a07 | ||
|
|
d95e3e0055 | ||
|
|
2cc31ff425 | ||
|
|
8258fd7d9f | ||
|
|
784cca2233 | ||
|
|
436539a700 | ||
|
|
dcb3da9f28 | ||
|
|
a354c841f1 | ||
|
|
3824f064cd | ||
|
|
cba6db752b | ||
|
|
a458e26581 | ||
|
|
9d68727a84 | ||
|
|
38b9a874e0 | ||
|
|
7a680fb9f2 | ||
|
|
a5f9262adb | ||
|
|
b05e32fa8c | ||
|
|
53d8cff835 | ||
|
|
00fe97ff88 | ||
|
|
607511fd64 | ||
|
|
8663c265d8 | ||
|
|
6c5d35d6ce | ||
|
|
95532cb318 | ||
|
|
4d91bc5908 | ||
|
|
b13900402d | ||
|
|
1bb6c03bd0 | ||
|
|
1445949e31 | ||
|
|
360d3834ca | ||
|
|
aacdcad529 | ||
|
|
ad9341835f | ||
|
|
b028adb6af | ||
|
|
39f683b272 | ||
|
|
a6c46c89eb | ||
|
|
d534cf6f02 | ||
|
|
dd4326f7c4 | ||
|
|
40aecd688e | ||
|
|
63730a6e2c | ||
|
|
4d4d26aef8 | ||
|
|
de6b32d8c6 | ||
|
|
a0af7f0524 | ||
|
|
c043bd3422 | ||
|
|
18ae1d6940 | ||
|
|
d6f64f9773 | ||
|
|
db99a4cb90 | ||
|
|
108689661f | ||
|
|
d3e00dba8e | ||
|
|
fcd33e5035 | ||
|
|
af9082cd9f | ||
|
|
6a0bb18fca | ||
|
|
8aa8d87781 | ||
|
|
4998af8d7a | ||
|
|
c6aa95f3f3 | ||
|
|
481be29366 | ||
|
|
3617b6ad8c | ||
|
|
3fb8e19a38 | ||
|
|
2ea2f1b4f2 | ||
|
|
26cb8ec4f1 | ||
|
|
7fe56bea86 | ||
|
|
11b16b8a86 | ||
|
|
de020ee695 | ||
|
|
3b83487611 | ||
|
|
09bab4f162 | ||
|
|
49fcc799ca | ||
|
|
10bc803775 | ||
|
|
4f40770fc6 | ||
|
|
a4495c6ef1 | ||
|
|
67d837c4ec | ||
|
|
138825af6d | ||
|
|
c093841336 | ||
|
|
2df1da4226 | ||
|
|
2792d60e2d | ||
|
|
656a3ace07 | ||
|
|
aec8e88c14 | ||
|
|
bdd5ca140d | ||
|
|
8b3b0def03 | ||
|
|
6440ece177 | ||
|
|
bd3518637c | ||
|
|
aef2a1c484 | ||
|
|
a4b28e5737 | ||
|
|
a3bc2eb836 | ||
|
|
3059da5805 | ||
|
|
18d5a492c8 | ||
|
|
160b0ea7d9 | ||
|
|
4dd1267bea | ||
|
|
b5c4328682 | ||
|
|
571fc69ef4 | ||
|
|
f51595cfc9 | ||
|
|
d54aea0036 | ||
|
|
51bb2974bc | ||
|
|
7a859061fd | ||
|
|
cefa9fcd75 | ||
|
|
d3bacd0b73 | ||
|
|
b94a98fc90 | ||
|
|
e0b2687231 | ||
|
|
cc6179a4dd | ||
|
|
e947bac4a3 | ||
|
|
11ecbb6ca7 | ||
|
|
322789cd4c | ||
|
|
f28464dba0 | ||
|
|
8f6456b1f8 | ||
|
|
1f32786c82 | ||
|
|
829c729ee9 | ||
|
|
5d3aacb892 | ||
|
|
741e9c5ed5 | ||
|
|
1408c1b623 | ||
|
|
c256f8d09e | ||
|
|
55c018c525 | ||
|
|
3fa94b5143 | ||
|
|
5127e2f89c | ||
|
|
3175fa3aca | ||
|
|
5614174b39 | ||
|
|
39fc52fe0a | ||
|
|
81188705b1 | ||
|
|
63c4873d8a | ||
|
|
1a85dcd890 | ||
|
|
27470fc504 | ||
|
|
65d18445d3 | ||
|
|
84dd54b33a | ||
|
|
7c410d36e3 | ||
|
|
98a603a570 | ||
|
|
5876052170 | ||
|
|
f8303b4623 | ||
|
|
20005a7a22 | ||
|
|
4f0bfbab21 | ||
|
|
811442832e | ||
|
|
40811311d7 | ||
|
|
198de211f8 | ||
|
|
9f5412fa9d | ||
|
|
0dc9de81ae | ||
|
|
5b8f42ce5e | ||
|
|
5314274ed6 | ||
|
|
c831856711 | ||
|
|
1bade6d796 | ||
|
|
629a4a950e | ||
|
|
aebb1f6ec8 | ||
|
|
6e42bc55e0 | ||
|
|
1235fba7ee | ||
|
|
7a459db022 | ||
|
|
607987def5 | ||
|
|
397ec62180 | ||
|
|
9315210fbe | ||
|
|
5127990a43 | ||
|
|
40ad2b155a | ||
|
|
a0412d026c | ||
|
|
7d2134c488 | ||
|
|
d894f52b97 | ||
|
|
735f475c24 | ||
|
|
353dd73e24 | ||
|
|
49fe06498a | ||
|
|
bc95ec8084 | ||
|
|
f79906bf16 | ||
|
|
b3262fcb80 | ||
|
|
52b8f924aa | ||
|
|
52f57160aa | ||
|
|
6d4f23919c | ||
|
|
899623f71b | ||
|
|
c5d677ac7b | ||
|
|
c75270a9fc | ||
|
|
1588a379eb | ||
|
|
72d2075828 | ||
|
|
e99c682637 | ||
|
|
c815f70831 | ||
|
|
0da50eaa79 | ||
|
|
b0af84a549 | ||
|
|
b9631e8521 | ||
|
|
f664f7a201 | ||
|
|
f72b3882c3 | ||
|
|
ea47a2973c | ||
|
|
04be9ca670 | ||
|
|
6f0baf6ca9 | ||
|
|
1f5ec6b8d5 | ||
|
|
a2a91520aa | ||
|
|
fd7b5d3de7 | ||
|
|
30ea844c43 | ||
|
|
efac53b121 | ||
|
|
73c0ef59c1 | ||
|
|
7e65ab2d3b | ||
|
|
fec769f632 | ||
|
|
90e42642b6 | ||
|
|
9d9610a882 | ||
|
|
1fc81f4b66 | ||
|
|
4f0b1e847c | ||
|
|
9567ac32f2 | ||
|
|
8dd9cfa2a6 | ||
|
|
dbda8ef893 | ||
|
|
cd143c15d5 | ||
|
|
509a388ccc | ||
|
|
76c6482495 | ||
|
|
010a44f831 | ||
|
|
e6b0d644d4 | ||
|
|
02dc68c899 | ||
|
|
11ac97cd09 | ||
|
|
61f6565321 | ||
|
|
55d951f211 | ||
|
|
143ce6fcd5 | ||
|
|
e264c6ad2e | ||
|
|
036b6785f1 | ||
|
|
caf5cc90ae | ||
|
|
b05e98b1b6 | ||
|
|
31d0779377 | ||
|
|
6b056e915e | ||
|
|
9d6c0dc580 | ||
|
|
6e973e07f4 | ||
|
|
c8098b9eac | ||
|
|
ed20ce388a | ||
|
|
33e01e431d | ||
|
|
7d631e4959 | ||
|
|
29eb566448 | ||
|
|
a770d2a972 | ||
|
|
688cffb031 | ||
|
|
2cccc26541 | ||
|
|
f96f083bb5 | ||
|
|
2e078aff7d | ||
|
|
bd1f192dc4 | ||
|
|
b62f241051 | ||
|
|
95d1ac354e | ||
|
|
54728f5d57 | ||
|
|
d9356b0f86 | ||
|
|
6b68d9d90b | ||
|
|
359a8c4a81 | ||
|
|
dcb95d131b | ||
|
|
f4e37ba7c0 | ||
|
|
1cbceec0e1 | ||
|
|
5b3c5407a1 | ||
|
|
27a120c7c3 | ||
|
|
375f3e8bc1 | ||
|
|
a75b4af374 | ||
|
|
b2a4cd488d | ||
|
|
1d8d203e9e | ||
|
|
4e7fe460a5 | ||
|
|
9be14a63b1 | ||
|
|
afd3c76088 | ||
|
|
6b697506c3 | ||
|
|
3eba296157 | ||
|
|
1b51de08f5 | ||
|
|
3e37f3fa54 | ||
|
|
a18679e95d | ||
|
|
0154f81e33 | ||
|
|
366931952b | ||
|
|
606fc352aa | ||
|
|
75f817b39c | ||
|
|
0bc49bf244 | ||
|
|
930a84b459 | ||
|
|
21c89e8163 | ||
|
|
b3770cd26c | ||
|
|
0cd4d44bd3 | ||
|
|
af15e73e64 | ||
|
|
33f176b8f9 | ||
|
|
42f21972fd | ||
|
|
2d79e54c46 | ||
|
|
224408b0e8 | ||
|
|
610e447d7c | ||
|
|
c2c0e19305 | ||
|
|
e8c4b0d57c | ||
|
|
36e7684d9a | ||
|
|
795c079af0 | ||
|
|
94e1d3f0fc | ||
|
|
1df002de81 | ||
|
|
b7115659b3 | ||
|
|
258ec6b89a | ||
|
|
d1ecdfc510 | ||
|
|
a807e66d4a | ||
|
|
8f9921d00c | ||
|
|
99bc4e9a87 | ||
|
|
9289cfdde9 | ||
|
|
bedbe3caad | ||
|
|
2e329426ab | ||
|
|
4c68d03457 | ||
|
|
0911fa4fa2 | ||
|
|
c5737c5f74 | ||
|
|
106198fa20 | ||
|
|
4eb74a3c93 | ||
|
|
3f0bcc9568 | ||
|
|
f0c35fde6d | ||
|
|
8357eeb762 | ||
|
|
61da54d6ca | ||
|
|
efea47833d | ||
|
|
24ea08b6d3 | ||
|
|
2808b334ed | ||
|
|
96159cf739 | ||
|
|
577dfa4f54 | ||
|
|
66075d620e | ||
|
|
60f1d21914 | ||
|
|
b108621a59 | ||
|
|
4a4e703f16 | ||
|
|
61984730ac | ||
|
|
f196d3bab8 | ||
|
|
7da45cb49e | ||
|
|
e994305da6 | ||
|
|
2af37b484e | ||
|
|
faf41f7d96 | ||
|
|
7629e29397 | ||
|
|
1cff7fcfea | ||
|
|
694cf6e958 | ||
|
|
0e12fbb2a0 | ||
|
|
450ad45882 | ||
|
|
d674e50591 | ||
|
|
61f2f4b761 | ||
|
|
baa2f49b14 | ||
|
|
8c0bd234d8 | ||
|
|
c4fd41562f | ||
|
|
a1d1b4e49f | ||
|
|
96fb7a45f7 | ||
|
|
d5eedd2c65 | ||
|
|
fe4f907099 | ||
|
|
1b45eaf3de | ||
|
|
cfbc0a1579 | ||
|
|
db1b99d8dd | ||
|
|
65a880e9fa | ||
|
|
37b4005d3e | ||
|
|
70faa252e7 | ||
|
|
3620be8dbc | ||
|
|
21c64dd60f | ||
|
|
fb69d790ce | ||
|
|
debd066edd | ||
|
|
f58d81b1e9 | ||
|
|
8d507f161b | ||
|
|
b015f7c801 | ||
|
|
80abe952ba | ||
|
|
c12162407c | ||
|
|
7f5c3b223a | ||
|
|
2f3e4ebf39 | ||
|
|
2c14f8587e | ||
|
|
42224052e2 | ||
|
|
a8dd5aa0fc | ||
|
|
f3d0a9bc3f | ||
|
|
d629b9e36a | ||
|
|
4d54ba2200 | ||
|
|
0035ef9194 | ||
|
|
fcb20296d7 | ||
|
|
6bb9080017 | ||
|
|
bbde16dc08 | ||
|
|
ac9716f193 | ||
|
|
8a2bc1c21b | ||
|
|
942b474ad7 | ||
|
|
f3ef9b671f | ||
|
|
3538631e8e | ||
|
|
1577ab04e1 | ||
|
|
7f2dfaa5b4 | ||
|
|
fd126746f7 | ||
|
|
63f7e9feb0 | ||
|
|
5eb380e103 | ||
|
|
832e821919 | ||
|
|
197e3f144d | ||
|
|
056b5b41e2 | ||
|
|
15d40fd64a | ||
|
|
979d3da69c | ||
|
|
72984cc4a8 | ||
|
|
0a7a815124 | ||
|
|
1ce68a49c6 | ||
|
|
b1b6abf285 | ||
|
|
9dfd6970f1 | ||
|
|
3583c13339 | ||
|
|
00ab198c9f | ||
|
|
669d9a89ca | ||
|
|
9c54603726 | ||
|
|
dc09a50472 | ||
|
|
68eb7031e2 | ||
|
|
19623cac21 | ||
|
|
4ca25ca533 | ||
|
|
178c49a430 | ||
|
|
32e2cd9f06 | ||
|
|
7aa514d9ba | ||
|
|
7c2575d723 | ||
|
|
f93ea20d5e | ||
|
|
73cb6ff00d | ||
|
|
72267fa60b | ||
|
|
6b6a27e849 | ||
|
|
daea10121c | ||
|
|
999a1e514b | ||
|
|
be30960366 | ||
|
|
38e5084018 | ||
|
|
fdd9bb1af6 | ||
|
|
81546820ab | ||
|
|
84e87f0e8a | ||
|
|
901592a88e | ||
|
|
24f908d9be | ||
|
|
f62ff0ad66 | ||
|
|
8e0ecbeb8f | ||
|
|
095367f760 | ||
|
|
5d34eb12e0 | ||
|
|
d4e760efe1 | ||
|
|
75ab8e697b | ||
|
|
f4b05d46ed | ||
|
|
04c5f2c36a | ||
|
|
db50f95482 | ||
|
|
0e52a08a47 | ||
|
|
7b5d49ef60 | ||
|
|
430ba60b33 | ||
|
|
3af1f3bc63 | ||
|
|
bdcb94af81 | ||
|
|
2ea9e723c2 | ||
|
|
e19091d809 | ||
|
|
64ab59c0e0 | ||
|
|
4707b363aa | ||
|
|
1a72245c15 | ||
|
|
dea7b9050d | ||
|
|
3bd810fedc | ||
|
|
f9cbf8361d | ||
|
|
eccd4d0325 | ||
|
|
e0decf1233 | ||
|
|
100927f16c | ||
|
|
bb670f6658 | ||
|
|
d37992aaf9 | ||
|
|
9048ee533d | ||
|
|
2b1e5927ca | ||
|
|
b5e03030d1 | ||
|
|
65056bfa72 | ||
|
|
c50bb90374 | ||
|
|
ec4fc265e0 | ||
|
|
8ea41af5c4 | ||
|
|
966331dac7 | ||
|
|
cf056bace7 | ||
|
|
405a455906 | ||
|
|
3a8b431a5b | ||
|
|
3ce0c17237 | ||
|
|
61a2e0f104 | ||
|
|
7c44251216 | ||
|
|
26e70664d6 | ||
|
|
8ac27cc798 | ||
|
|
d314164fed | ||
|
|
d2cbed151b | ||
|
|
fc06ae58b2 | ||
|
|
a8768c78a2 | ||
|
|
ee8763f60d | ||
|
|
db633330fe | ||
|
|
c1ffafd663 | ||
|
|
72f35dc914 | ||
|
|
e5f82f53b9 | ||
|
|
e39e6893e0 | ||
|
|
9ab77d65f4 | ||
|
|
8ed96cad1d | ||
|
|
7795eb8239 | ||
|
|
207c7ab1e0 | ||
|
|
27af79684f | ||
|
|
6b61a8eed1 | ||
|
|
181e6eac75 | ||
|
|
fd1979857c | ||
|
|
448bc3facd | ||
|
|
97cabadb88 | ||
|
|
8e284a70b7 | ||
|
|
73f9febe06 | ||
|
|
6a6cc22e9c | ||
|
|
b293639b76 | ||
|
|
f06036be09 | ||
|
|
867571af78 | ||
|
|
f6314d3124 | ||
|
|
1e87dd7903 | ||
|
|
3b6af2f0c2 | ||
|
|
5bdff41641 | ||
|
|
67e9d105cb | ||
|
|
f1fc99f16f | ||
|
|
f89e359d53 | ||
|
|
77ec170a50 | ||
|
|
34320f5f20 | ||
|
|
a26271e46e | ||
|
|
e2e7466250 | ||
|
|
1e24cc4643 | ||
|
|
dfc23c3528 | ||
|
|
cd11a5dc27 | ||
|
|
899734296b | ||
|
|
7a3a81c152 | ||
|
|
e62a4a05ac | ||
|
|
463ca207ce | ||
|
|
da6e1b31ea | ||
|
|
8c783b1680 | ||
|
|
efce88ff12 | ||
|
|
01608b7e18 | ||
|
|
a5f0e0395a | ||
|
|
0b723174fd | ||
|
|
5d248bf0df | ||
|
|
c039ccdeb0 | ||
|
|
d88fb32a73 | ||
|
|
37ac409586 | ||
|
|
7b24e94c66 | ||
|
|
e12cd2a50c | ||
|
|
98b2ba4fc1 | ||
|
|
2f0afdccc1 | ||
|
|
79734df554 | ||
|
|
c52657fa1a | ||
|
|
9cac8409cd | ||
|
|
18703ce02d | ||
|
|
709a166bd6 | ||
|
|
8048e6297c | ||
|
|
fb0dded103 | ||
|
|
055e969e7a | ||
|
|
f10db8a30e | ||
|
|
c19af3525e | ||
|
|
7c60ccfc35 | ||
|
|
84cba33aab | ||
|
|
a52b1ec64f | ||
|
|
f30c4720ae | ||
|
|
7fc8c02688 | ||
|
|
54a7a0d534 | ||
|
|
8d73160a75 | ||
|
|
ff10602c65 | ||
|
|
ca50fe386d | ||
|
|
39f3c6e41d | ||
|
|
ba1b96e518 | ||
|
|
ef486b2cc6 | ||
|
|
06f3cb4f8e | ||
|
|
074f5ff996 | ||
|
|
8c26f32d5f | ||
|
|
9a2ee54389 | ||
|
|
ab69c03698 | ||
|
|
fab1f4e7a0 | ||
|
|
41eed484c1 | ||
|
|
7d18f9bdde | ||
|
|
3a48c3de7a | ||
|
|
d769a9936b | ||
|
|
1697cb3b1a | ||
|
|
62aa32a417 | ||
|
|
a0d0852838 | ||
|
|
2f479cae69 | ||
|
|
4820d57fa8 | ||
|
|
04e3b0b3c1 | ||
|
|
a7f78b9f68 | ||
|
|
f3d8eb4665 | ||
|
|
090f79b951 | ||
|
|
88c0dbf661 | ||
|
|
9e3822ceaf | ||
|
|
007b0a8fe6 | ||
|
|
7f0ebf8871 | ||
|
|
5414e94a1a | ||
|
|
461dee8657 | ||
|
|
297b6193fe | ||
|
|
4b74e40a5f | ||
|
|
5a9b08dec2 | ||
|
|
5e6f9f79a2 | ||
|
|
e2f93e6ae1 | ||
|
|
93314b59fb | ||
|
|
29269c6686 | ||
|
|
3c84b6e2f6 | ||
|
|
04fb708543 | ||
|
|
df302f277c | ||
|
|
5e63e663bb | ||
|
|
ca10cb2d37 | ||
|
|
c9854153f8 | ||
|
|
129e3c6326 | ||
|
|
66996711ae | ||
|
|
8fe37cea51 | ||
|
|
de64b6f267 | ||
|
|
9a9d9c7cc1 | ||
|
|
a191e9762a | ||
|
|
a7b35c6e22 | ||
|
|
5034346b67 | ||
|
|
661f64b902 | ||
|
|
bbc83f721c | ||
|
|
01f4541331 | ||
|
|
0e4a894f62 | ||
|
|
1c135a9b5b | ||
|
|
e65c85ce73 | ||
|
|
26b58991f9 | ||
|
|
8390df37ca | ||
|
|
371fc73f24 | ||
|
|
921dae5444 | ||
|
|
9b3abbec89 | ||
|
|
6935baba5b | ||
|
|
dec1e32f96 | ||
|
|
710c2ccfcd | ||
|
|
8e66e534ae | ||
|
|
0f5f30b993 | ||
|
|
b199f733f7 | ||
|
|
0cdcf3a3e0 | ||
|
|
8e09486e82 | ||
|
|
0c24b78573 | ||
|
|
1436be9699 | ||
|
|
0489ad7c62 | ||
|
|
c553570533 | ||
|
|
bda112297f | ||
|
|
331a4e4406 | ||
|
|
a9faf8ceff | ||
|
|
2866d1ace9 | ||
|
|
11a74f7a31 | ||
|
|
634a2035ee | ||
|
|
ffada9257d | ||
|
|
e09164e5b3 | ||
|
|
de1a5f3034 | ||
|
|
86e83faef3 | ||
|
|
9f06c8df76 | ||
|
|
6e511de7db | ||
|
|
e34aae9982 | ||
|
|
675b388b8e | ||
|
|
7d239fe4ac | ||
|
|
edd92caba1 | ||
|
|
5c3b4abf42 | ||
|
|
d3a3466b14 | ||
|
|
4399383781 | ||
|
|
bb383998bb | ||
|
|
ffeb174ca1 | ||
|
|
a90d74dde8 | ||
|
|
9d7fd79e76 | ||
|
|
6f29d234eb | ||
|
|
6f5517f602 | ||
|
|
cc43c745b2 | ||
|
|
db8d961b27 | ||
|
|
a0bdec2846 | ||
|
|
5bbcd386fa | ||
|
|
7657632024 | ||
|
|
ab29063a97 | ||
|
|
c06ef23eb1 | ||
|
|
7b2f7aa827 | ||
|
|
7113c10f4b | ||
|
|
14033946e5 | ||
|
|
6e0e056ca7 | ||
|
|
7aa4f0ccdb | ||
|
|
4b04450fa6 | ||
|
|
ad81560be5 | ||
|
|
5c26faa20e | ||
|
|
bd85fa2457 | ||
|
|
430136fdc9 | ||
|
|
a616aa8e55 | ||
|
|
05b9166c25 | ||
|
|
71770eb92e | ||
|
|
2089a2a956 | ||
|
|
488efa2316 | ||
|
|
44551dad2d | ||
|
|
00e0e72bca | ||
|
|
a611b70087 | ||
|
|
757ed2dfe7 | ||
|
|
8971a67aca | ||
|
|
5a343da5cc | ||
|
|
4c77c1691b | ||
|
|
aadff33011 | ||
|
|
25d7705379 | ||
|
|
867ba3c7da | ||
|
|
3f08d9604e | ||
|
|
5d813aa4d0 | ||
|
|
ce3a1ddcb0 | ||
|
|
e37752f957 | ||
|
|
40d920ddc9 | ||
|
|
4362eb79e6 | ||
|
|
f6c9af488b | ||
|
|
a34ac6a596 | ||
|
|
3b3baa996b | ||
|
|
d6b81a9721 | ||
|
|
a460c753e7 | ||
|
|
9f59e956fa | ||
|
|
bd02eb8e6b | ||
|
|
a266790a25 | ||
|
|
3462e3b6c1 | ||
|
|
ed29944b91 | ||
|
|
a0251b3256 | ||
|
|
557474095f | ||
|
|
b7dd267807 | ||
|
|
58a0b1d2c3 | ||
|
|
d8acc3a8f2 | ||
|
|
5f21c75e02 | ||
|
|
79d72b6292 | ||
|
|
aa67c738a1 | ||
|
|
117628bf7e | ||
|
|
70dbbf52f0 | ||
|
|
99bf2c6f9e | ||
|
|
3fdeea7f65 | ||
|
|
ea9d110036 | ||
|
|
16ad232e0d | ||
|
|
5b8e5fce20 | ||
|
|
0633d703d0 | ||
|
|
ec6ce9fcd8 | ||
|
|
c9e53d5a30 | ||
|
|
828e10773c | ||
|
|
34b5c1a1b9 | ||
|
|
b2a7975493 | ||
|
|
f0af686d17 | ||
|
|
eda1121054 | ||
|
|
d97eb240d9 | ||
|
|
8c296d96c7 | ||
|
|
65a49bb6e4 | ||
|
|
cfedc90fdd | ||
|
|
5665a62938 | ||
|
|
36521869ae | ||
|
|
84fd7a49ad | ||
|
|
24b5f05522 | ||
|
|
17415424bf | ||
|
|
920c0fdb62 | ||
|
|
40414f2823 | ||
|
|
3d43bc0480 | ||
|
|
7bee5f1ab6 | ||
|
|
a43f5c8d21 | ||
|
|
8361069344 | ||
|
|
c9661e2732 | ||
|
|
bd13cf84a1 | ||
|
|
e54cfc002b | ||
|
|
5aac63d9f5 | ||
|
|
6a19bbee7d | ||
|
|
2e5c4b4515 | ||
|
|
79d1aaf7f5 | ||
|
|
a659969bcf | ||
|
|
53bdf9dac4 | ||
|
|
ad394fb090 | ||
|
|
92a123a47d | ||
|
|
755173bd2e | ||
|
|
27477402c9 | ||
|
|
dc9c41e119 | ||
|
|
3c7f9e7ba4 | ||
|
|
fbf018598e | ||
|
|
83b4dcb55c | ||
|
|
5812571df4 | ||
|
|
b1c688abe8 | ||
|
|
f4b30bbdd7 | ||
|
|
e4008862ce | ||
|
|
2b7079eed2 | ||
|
|
983685fde3 | ||
|
|
eef1cc716d | ||
|
|
34e2a9dc37 | ||
|
|
1786692406 | ||
|
|
c37afce303 | ||
|
|
1ea99cdd4d | ||
|
|
4c1d22b8a6 | ||
|
|
5f22c93db7 | ||
|
|
13a42f1d9e | ||
|
|
c4d5d85c3e | ||
|
|
d915ccec6e | ||
|
|
ea1b70191c | ||
|
|
19815c3bce | ||
|
|
66fb6b5a1c | ||
|
|
94ac87f4f5 | ||
|
|
79d5bf66a7 | ||
|
|
a4535c92c3 | ||
|
|
cecdb15692 | ||
|
|
3c08eae85b | ||
|
|
db928ea1ae | ||
|
|
bb002356b4 | ||
|
|
431e78cf09 | ||
|
|
81b9ec50b0 | ||
|
|
e0ba803ca9 | ||
|
|
7ae57483f3 | ||
|
|
d22640ef4e | ||
|
|
f3eeeb760f | ||
|
|
695e112039 | ||
|
|
133e67adb8 | ||
|
|
6079cd3df8 | ||
|
|
6f4fd2dc6e | ||
|
|
b30eb9c00c | ||
|
|
1236d8be19 | ||
|
|
cb35ecb4b0 | ||
|
|
54550aa002 | ||
|
|
d3db963dce | ||
|
|
1dde23a0c9 | ||
|
|
5feccc73c7 | ||
|
|
1cf13a7c1a | ||
|
|
7289ac645a | ||
|
|
699909f808 | ||
|
|
344610e24b | ||
|
|
092901b9ea | ||
|
|
3ac6b34f4b | ||
|
|
d56b961c47 | ||
|
|
858a73e187 | ||
|
|
1623aee1e0 | ||
|
|
c0a633ea1d | ||
|
|
5628c85b51 | ||
|
|
2e1accc0f3 | ||
|
|
93b747f1ba | ||
|
|
21c16b4a51 | ||
|
|
e5e1e165b9 | ||
|
|
8ae39ae8d4 | ||
|
|
110e01a861 | ||
|
|
578e774778 | ||
|
|
d7d13e458c | ||
|
|
0bf579cf27 | ||
|
|
77cefa924c | ||
|
|
1fe26901af | ||
|
|
0dd50cf3d8 | ||
|
|
54b3c711c3 | ||
|
|
f404161d23 | ||
|
|
5a13068aaa | ||
|
|
32067b9adf | ||
|
|
ea2f5f0035 | ||
|
|
ea6540ef90 | ||
|
|
1d5c1de5d3 | ||
|
|
4b11d87a22 | ||
|
|
c2149f9ea6 | ||
|
|
73a4994cac | ||
|
|
c9a4a6975c | ||
|
|
1a1aa37a0e | ||
|
|
7d3abdc512 | ||
|
|
db4c2243e3 | ||
|
|
6dc243e1af | ||
|
|
adb5fb3bee | ||
|
|
7955319771 | ||
|
|
3da76522f8 | ||
|
|
c9ac1b5a06 | ||
|
|
51dff6b537 | ||
|
|
1f4b55e98e | ||
|
|
229ea27050 | ||
|
|
505b4c434d | ||
|
|
12ab6872ec | ||
|
|
4c78e887e1 | ||
|
|
8871655a9b | ||
|
|
db1966c156 | ||
|
|
d4c0c8940b | ||
|
|
d4134195ea | ||
|
|
a8fd1b4c16 | ||
|
|
086473c8eb | ||
|
|
5642ef61ca | ||
|
|
fec7c62b17 | ||
|
|
e046b1bfdb | ||
|
|
01007986dc | ||
|
|
ad56ba1bfa | ||
|
|
54c2d5a6cc | ||
|
|
25ad84e5cb | ||
|
|
dcdf8a4d5c | ||
|
|
5d24be8c51 | ||
|
|
fa42efcf91 | ||
|
|
7f4f778bb1 | ||
|
|
8a2e5cace8 | ||
|
|
23c66b6cfe | ||
|
|
b65fe814a0 | ||
|
|
e74c8587bd | ||
|
|
ab34b86574 | ||
|
|
011ecd980d | ||
|
|
9ca1c6666e | ||
|
|
ba5316ca8e | ||
|
|
f957227576 | ||
|
|
70f763dbe0 | ||
|
|
f8201e6478 | ||
|
|
e053941467 | ||
|
|
17e2478522 | ||
|
|
17df7141ae | ||
|
|
5167dee0e3 | ||
|
|
a1a596b02a | ||
|
|
27f98d24eb | ||
|
|
51ef4568dd | ||
|
|
4c731de8b7 | ||
|
|
fc692cb540 | ||
|
|
cedfade08d | ||
|
|
eedbc7f436 | ||
|
|
b6a683eb6e | ||
|
|
df677ff8aa | ||
|
|
1d8b352d2d | ||
|
|
c8432e3763 | ||
|
|
b3f88735a8 | ||
|
|
789b56872c | ||
|
|
009ed26fd2 | ||
|
|
5ed0ce79ab | ||
|
|
8b8a82bb67 | ||
|
|
94c22fec46 | ||
|
|
8be760b594 | ||
|
|
42b4ec310f | ||
|
|
4ea676b229 | ||
|
|
dda676b1b2 | ||
|
|
f7a3dbc5ed | ||
|
|
1f3947ea4c | ||
|
|
cb7589cc95 | ||
|
|
2ca4b30553 | ||
|
|
bb238c4106 | ||
|
|
4b0b49d1ed | ||
|
|
dd080de16c | ||
|
|
1ae257944b | ||
|
|
a2c8cfb84d | ||
|
|
c01740d516 | ||
|
|
1ce5cd154a | ||
|
|
1fce27f0c3 | ||
|
|
4fc985b518 | ||
|
|
0e999f281b | ||
|
|
aadc802fdd | ||
|
|
d8a7589752 | ||
|
|
f1021ab820 | ||
|
|
8bd3cccc08 | ||
|
|
78fbfa1dde | ||
|
|
16dd841ce5 | ||
|
|
992de38184 | ||
|
|
835e86ad19 | ||
|
|
ef5fb7a98e | ||
|
|
e8cb3cbfa4 | ||
|
|
68b2c9e7d3 | ||
|
|
e78427483c | ||
|
|
25364aa2a6 | ||
|
|
525d2df3cc | ||
|
|
701031a473 | ||
|
|
1960e02ab7 | ||
|
|
ca2ed1c941 | ||
|
|
bde8528859 | ||
|
|
86392857c5 | ||
|
|
95c6c16851 | ||
|
|
ce4f0c4fee | ||
|
|
2d081e6ce6 | ||
|
|
000106200f | ||
|
|
2bb4274517 | ||
|
|
5cd81b8c92 | ||
|
|
5712053ad8 | ||
|
|
192db1c343 | ||
|
|
a3bd57489a | ||
|
|
d69e76959b | ||
|
|
6d784a1a7e | ||
|
|
11d2bca8a7 | ||
|
|
f922e84eb6 | ||
|
|
e2bca737f0 | ||
|
|
940ce98d2c | ||
|
|
72590e6b8f | ||
|
|
3e81ca7da5 | ||
|
|
c4fa7a965d | ||
|
|
1a6e14c3bb | ||
|
|
7379d8a54d | ||
|
|
b63464d239 | ||
|
|
1dac4b2dc1 | ||
|
|
44e7b36a8b | ||
|
|
a26c677df4 | ||
|
|
5d10dda5a1 | ||
|
|
0253a46dbb | ||
|
|
9593059258 | ||
|
|
3f0efc2a6f | ||
|
|
b9593adc7c | ||
|
|
6cf3b54b4b | ||
|
|
78411d29a7 | ||
|
|
f8a49c41ef | ||
|
|
a0a0c8e308 | ||
|
|
e5814dad73 | ||
|
|
f076594288 | ||
|
|
7dfe0bf9b2 | ||
|
|
d9ce8828c9 | ||
|
|
cb2df234ae | ||
|
|
7d73dc6602 | ||
|
|
16bd8cef38 | ||
|
|
f2567f9af4 |
+10
@@ -7,3 +7,13 @@ config.cache
|
|||||||
config.log
|
config.log
|
||||||
config.status
|
config.status
|
||||||
configure
|
configure
|
||||||
|
do-config.sh
|
||||||
|
.cdtproject
|
||||||
|
.project
|
||||||
|
config.guess
|
||||||
|
config.sub
|
||||||
|
depcomp
|
||||||
|
INSTALL
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ PROJECT_NAME = SimGear
|
|||||||
# This could be handy for archiving the generated documentation or
|
# This could be handy for archiving the generated documentation or
|
||||||
# if some version control system is used.
|
# if some version control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = 0.3.0
|
PROJECT_NUMBER = 0.3.10
|
||||||
|
|
||||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||||
# base path where the generated documentation will be put.
|
# base path where the generated documentation will be put.
|
||||||
@@ -64,14 +64,14 @@ EXTRACT_STATIC = NO
|
|||||||
# various overviews, but no documentation section is generated.
|
# various overviews, but no documentation section is generated.
|
||||||
# This option has no effect if EXTRACT_ALL is enabled.
|
# This option has no effect if EXTRACT_ALL is enabled.
|
||||||
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
HIDE_UNDOC_MEMBERS = YES
|
||||||
|
|
||||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
||||||
# undocumented classes that are normally visible in the class hierarchy.
|
# undocumented classes that are normally visible in the class hierarchy.
|
||||||
# If set to NO (the default) these class will be included in the various
|
# If set to NO (the default) these class will be included in the various
|
||||||
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
||||||
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
HIDE_UNDOC_CLASSES = YES
|
||||||
|
|
||||||
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
|
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
|
||||||
# include brief member descriptions after the members that are listed in
|
# include brief member descriptions after the members that are listed in
|
||||||
@@ -298,22 +298,27 @@ WARN_LOGFILE =
|
|||||||
# with spaces.
|
# with spaces.
|
||||||
|
|
||||||
INPUT = \
|
INPUT = \
|
||||||
|
DoxygenMain.cxx \
|
||||||
simgear/bucket \
|
simgear/bucket \
|
||||||
simgear/compiler.h \
|
simgear/compiler.h \
|
||||||
simgear/constants.h \
|
simgear/constants.h \
|
||||||
simgear/debug \
|
simgear/debug \
|
||||||
|
simgear/environment \
|
||||||
simgear/ephemeris \
|
simgear/ephemeris \
|
||||||
simgear/io \
|
simgear/io \
|
||||||
simgear/magvar \
|
simgear/magvar \
|
||||||
simgear/math \
|
simgear/math \
|
||||||
simgear/misc \
|
simgear/misc \
|
||||||
|
simgear/nasal \
|
||||||
|
simgear/props \
|
||||||
simgear/route \
|
simgear/route \
|
||||||
|
simgear/scene \
|
||||||
simgear/screen \
|
simgear/screen \
|
||||||
simgear/serial \
|
simgear/serial \
|
||||||
|
simgear/structure \
|
||||||
simgear/sg_inlines.h \
|
simgear/sg_inlines.h \
|
||||||
simgear/sg_traits.hxx \
|
simgear/sg_traits.hxx \
|
||||||
simgear/sg_zlib.h \
|
simgear/sound \
|
||||||
simgear/sky \
|
|
||||||
simgear/threads \
|
simgear/threads \
|
||||||
simgear/timing \
|
simgear/timing \
|
||||||
simgear/xml
|
simgear/xml
|
||||||
@@ -335,7 +340,7 @@ RECURSIVE = YES
|
|||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||||
|
|
||||||
EXCLUDE = simgear/metakit simgear/zlib
|
EXCLUDE = simgear/scene/sky/clouds3d
|
||||||
|
|
||||||
# If the value of the INPUT tag contains directories, you can use the
|
# If the value of the INPUT tag contains directories, you can use the
|
||||||
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
||||||
@@ -385,7 +390,7 @@ FILTER_SOURCE_FILES = NO
|
|||||||
# of all compounds will be generated. Enable this if the project
|
# of all compounds will be generated. Enable this if the project
|
||||||
# contains a lot of classes, structs, unions or interfaces.
|
# contains a lot of classes, structs, unions or interfaces.
|
||||||
|
|
||||||
ALPHABETICAL_INDEX = NO
|
ALPHABETICAL_INDEX = YES
|
||||||
|
|
||||||
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
|
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
|
||||||
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
||||||
@@ -514,7 +519,7 @@ COMPACT_LATEX = NO
|
|||||||
# by the printer. Possible values are: a4, a4wide, letter, legal and
|
# by the printer. Possible values are: a4, a4wide, letter, legal and
|
||||||
# executive. If left blank a4wide will be used.
|
# executive. If left blank a4wide will be used.
|
||||||
|
|
||||||
PAPER_TYPE = a4wide
|
PAPER_TYPE = letter
|
||||||
|
|
||||||
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
|
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
|
||||||
# packages that should be included in the LaTeX output.
|
# packages that should be included in the LaTeX output.
|
||||||
|
|||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
/* This is a dummy code file that only contains doxygen main page
|
||||||
|
documentation. It has a .cxx extension so that emacs will happily
|
||||||
|
autoindent correctly. */
|
||||||
|
|
||||||
|
/** \mainpage SimGear
|
||||||
|
* Simulation, Visualization, and Game development libraries.
|
||||||
|
|
||||||
|
* \section intro Introduction
|
||||||
|
*
|
||||||
|
* SimGear is a collection of libraries which provide a variety of
|
||||||
|
* functionality useful for building simulations, visualizations, and
|
||||||
|
* even games. All the SimGear code is designed to be portable across
|
||||||
|
* a wide variety of platforms and compilers. It has primarily been
|
||||||
|
* developed in support of the FlightGear project, but as development
|
||||||
|
* moves forward, we are generalizing the code to make more of it
|
||||||
|
* useful for other types of applications.
|
||||||
|
*
|
||||||
|
* Some of the functionality provide includes
|
||||||
|
*
|
||||||
|
* - Compiler and platform abstractions for many tricky differences.
|
||||||
|
* (compiler.h)
|
||||||
|
*
|
||||||
|
* - A whole earth tiling/indexing scheme. (SGBucket)
|
||||||
|
*
|
||||||
|
* - A console debugging output scheme that tracks severity and
|
||||||
|
* category that can be completely compiled out for a final build release.
|
||||||
|
* (logstream.hxx)
|
||||||
|
*
|
||||||
|
* - Code to manage "real" time (SGTime), time zones (SGTimeZone), and
|
||||||
|
* millesecond time differences (SGTimeStamp).
|
||||||
|
*
|
||||||
|
* - Code to calculate accurate positions of sun, moon, stars, and
|
||||||
|
* planets for a given time, date, season, earth location, etc.
|
||||||
|
* (SGEphemeris)
|
||||||
|
*
|
||||||
|
* - Code to render a realistic sky dome, cloud layers, sun, moon,
|
||||||
|
* stars, and planets all with realistic day/night/sunset/sunrise
|
||||||
|
* effects. Includes things like correct moon phase, textured moon,
|
||||||
|
* sun halo, etc. (SGSky is built on top of SGCloudLayer ...)
|
||||||
|
*
|
||||||
|
* - Simple serial (SGSerial), file (SGFile), socket (SGSocket), and
|
||||||
|
* UDP socket (SGSocketUDP) I/O abstractions.
|
||||||
|
*
|
||||||
|
* - Code to calculate magnetic variation. (SGMagVar)
|
||||||
|
*
|
||||||
|
* - A variety of classes and functions for interpolation tables
|
||||||
|
* (SGInterpTable), least squares computation (leastsqs.hxx), 3D
|
||||||
|
* point/vectors (Point3D), 3D polar math and conversions (polar3d.hxx),
|
||||||
|
* WGS-84 math and conversions (sg_geodesy.hxx), random number abstraction
|
||||||
|
* (sg_random.h), STL conglomerates for common list types (sg_types.hxx),
|
||||||
|
* and other vector and linear algebra routines (vector.hxx)
|
||||||
|
*
|
||||||
|
* - An abstraction to hide platform dependent path naming schemes. (SGPath)
|
||||||
|
*
|
||||||
|
* - A C++ streams wrapper to handle compress input/output streams.
|
||||||
|
* (sg_gzifstream)
|
||||||
|
*
|
||||||
|
* - An optimized "property manager" which associates ascii property
|
||||||
|
* names with their corresponding value. This can be a great way to build
|
||||||
|
* loose linkages between modules, or build linkages/connections that can
|
||||||
|
* be determined from config files or at runtime. (SGPropertyNode)
|
||||||
|
* Also included is a set of functions to dump the property tree into a
|
||||||
|
* standard xml file and subsequently read/parse a standard xml file and
|
||||||
|
* rebuild the associated property tree. (props_io.hxx)
|
||||||
|
*
|
||||||
|
* - Scene management and drawing routines:
|
||||||
|
* - material property management
|
||||||
|
* - object management
|
||||||
|
* - terrain tile management and paging
|
||||||
|
* - sky dome rendering (with ephemeral objects)
|
||||||
|
*
|
||||||
|
* - Code to handle screen dumps (screen-dump.hxx) and ultra-hires
|
||||||
|
* tile rendered screen dumps (tr.h)
|
||||||
|
*
|
||||||
|
* - A sound effects manager. (SGSoundMgr, SGSimpleSound, SGSound)
|
||||||
|
*
|
||||||
|
* - A threading abstraction. (SGThread)
|
||||||
|
*
|
||||||
|
* - A simple but highly functional XML parser that interfaces nicely
|
||||||
|
* with the property manager. (easyxml.hxx)
|
||||||
|
|
||||||
|
* \section supports Supported Platforms
|
||||||
|
* SimGear has been built on the following platforms:
|
||||||
|
*
|
||||||
|
* - Linux (x86)
|
||||||
|
* - Windows (MSVC, Cygwin, Mingwin)
|
||||||
|
* - SGI (native compilers)
|
||||||
|
* - Mac OS X
|
||||||
|
* - FreeBSD
|
||||||
|
|
||||||
|
* \section depends Dependencies
|
||||||
|
*
|
||||||
|
* SimGear depends on several other open source packages. These must
|
||||||
|
* be installed before SimGear can be installed:
|
||||||
|
*
|
||||||
|
* - glut and opengl
|
||||||
|
* - plib (http://plib.sf.net)
|
||||||
|
* - metakit
|
||||||
|
* - zlib
|
||||||
|
* - libjpeg (optional)
|
||||||
|
* - pthread (optional)
|
||||||
|
|
||||||
|
* \section license Licensing
|
||||||
|
*
|
||||||
|
* SimGear is licensed under the terms of the LGPL
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
+5
-3
@@ -1,16 +1,18 @@
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
acinclude.m4 \
|
acinclude.m4 \
|
||||||
autogen.sh \
|
autogen.sh \
|
||||||
|
DoxygenMain.cxx \
|
||||||
README.MSVC \
|
README.MSVC \
|
||||||
README.metakit \
|
|
||||||
README.zlib \
|
README.zlib \
|
||||||
|
projects \
|
||||||
SimGear.dsp \
|
SimGear.dsp \
|
||||||
SimGear.dsw
|
SimGear.dsw
|
||||||
|
|
||||||
SUBDIRS = src-libs simgear
|
SUBDIRS = simgear
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
(cd $(top_srcdir); $(HOME)/projects/FlightGear-0.7/admin/am2dsp.pl)
|
(cd $(top_srcdir); $(HOME)/Projects/FlightGear/admin/am2dsp.pl)
|
||||||
|
rm -rf `find $(distdir)/projects -name CVS`
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rule to build RPM distribution package
|
# Rule to build RPM distribution package
|
||||||
|
|||||||
@@ -1,3 +1,197 @@
|
|||||||
|
New in 0.3.10
|
||||||
|
* April 5, 2006
|
||||||
|
|
||||||
|
* Add a small accessor function to expose local timezone offset.
|
||||||
|
* Improved exception handling and made output more helpful in various places.
|
||||||
|
* Better pbuffer runtime detection.
|
||||||
|
* Add directory creation capability to file/path library.
|
||||||
|
* Added a basic reference counting class to improve robustness of
|
||||||
|
memory management in places. Use this for all scenegraph
|
||||||
|
references, sgmaterial references, sgmatmodel references, and
|
||||||
|
sgsoundsample references.
|
||||||
|
* Add support for point sprites.
|
||||||
|
* Updates to rain cone rendering.
|
||||||
|
* Add a new vector library and integrate that with improved coordinate
|
||||||
|
system conversion code.
|
||||||
|
* Mutex locking and cleanup improvements in the threading abstraction
|
||||||
|
library.
|
||||||
|
* Add MacOS RenderTexture support.
|
||||||
|
* Add a Nasal based io libarary that is not activated by default.
|
||||||
|
* Added a set of MS-VC8 project files.
|
||||||
|
|
||||||
|
* Various platform related bug fixes.
|
||||||
|
* Various compiler related bug/warning fixes.
|
||||||
|
* Clean up some things that triggered valgrind warnings.
|
||||||
|
* Fix a Nasal cmp() bug.
|
||||||
|
* Removed ancient version of zlib from distribution.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.9
|
||||||
|
* November 17, 2005
|
||||||
|
|
||||||
|
* Add support for OpenAL 1.1 (with a separate alut library.)
|
||||||
|
* Add support for volumetric shadows. Aircraft can cast shadows on themselves
|
||||||
|
as well as onto the ground (by Harald Johnsen.)
|
||||||
|
* New 3d volumetric clouds by Harald Johnsen (along with several rounds of
|
||||||
|
followup fixes and improvements.)
|
||||||
|
* Remove Mark Harris's old 3d clouds because they were never properly
|
||||||
|
integrated. And we now have new 3d clouds.
|
||||||
|
* Add support for seasonal textures (with a set of winter textures added
|
||||||
|
to FlightGear.)
|
||||||
|
* Updated Nasal scripting system. Adds several new syntax convenience
|
||||||
|
features, fixes parser bugs, fixes several internal bugs.
|
||||||
|
* Our 3d cockpit jitter problem is fixed (woohoo!)
|
||||||
|
* Add code to support rendering to a texture.
|
||||||
|
* Allow "tip" popups to pop themselves down after the appropriate
|
||||||
|
timeout, even if the sim time is paused.
|
||||||
|
* Various low model level animation fixes and additions ... color,
|
||||||
|
transparency, 'chrome' effects, randomized spin, etc.
|
||||||
|
* Create our own portable stdint.h implementation.
|
||||||
|
* Fixed several memory leaks.
|
||||||
|
* removeChildren() added to the property system.
|
||||||
|
* Fix many cases of 'const'.
|
||||||
|
* Fixes for cygwin, solaris/sun, Mac OS X, MSVC, gcc-3.4.x.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.8
|
||||||
|
* January 18, 2005
|
||||||
|
|
||||||
|
* Configure script does a sanity check for the existence of openal.
|
||||||
|
* Better pthreads detection for FreeBSD.
|
||||||
|
* Abstract out the location of gl.h, glu.h, and glut.h so we can more
|
||||||
|
easily support MacOS which puts these in an oddball location.
|
||||||
|
* Added two new debug output types for instrumentation and systems.
|
||||||
|
* Add a name parameter to the waypoint class for supporting a route
|
||||||
|
manager in the flightgear gps module.
|
||||||
|
* Make display list usage optional.
|
||||||
|
* Event manager: specifying a zero delay will force event execution in
|
||||||
|
the next frame rather than entering an infinite loop.
|
||||||
|
* gcc-4.0 fix.
|
||||||
|
* Fixes to property tree loading and saving.
|
||||||
|
* Make volume inaudible at startup.
|
||||||
|
* Solaris fixes.
|
||||||
|
* For low density cloud coverage, blend the layer to nothing as we pass
|
||||||
|
through instead of fully engulfing the aircraft in the cloud.
|
||||||
|
* Add several new capabilities to the texture management code for building
|
||||||
|
normal maps and doing some simple on-the-fly effects on textures.
|
||||||
|
* Better error message for sound problems.
|
||||||
|
* Add support for binding a thread to a specific CPU.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.7
|
||||||
|
* October 12, 2004
|
||||||
|
|
||||||
|
* Add support for parsing xml from an in memory buffer, not just a file.
|
||||||
|
* Don't reduce visibility for a "clear" cloud layer.
|
||||||
|
* Add support for audio orientation (direction and cone) for internal
|
||||||
|
view and tower view.
|
||||||
|
* Add support for drawing from display lists rather than in immediate mode.
|
||||||
|
This provides a big performance improvement on many systems.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.6
|
||||||
|
* July 29, 2004
|
||||||
|
|
||||||
|
* Better MinGW support
|
||||||
|
* A bit better handling of OpenAL under Cygwin
|
||||||
|
* Switched audio system from plib's "sl/sm" to OpenAL.
|
||||||
|
* Add support for scaling an object based on distance. The scaling
|
||||||
|
factor is determined by a lookup table based on distance.
|
||||||
|
* Add a "flash" animation type.
|
||||||
|
* Fix cloud positioning/animation bugs.
|
||||||
|
* Fix an off-by-one error in props_io.cxx
|
||||||
|
* Clip audio gain (volume) to 1.0
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.5
|
||||||
|
* March 26, 2004
|
||||||
|
|
||||||
|
* Added Andy's nasal interpreter for small built in scripting tasks.
|
||||||
|
Nasal integrates nicely with FlightGear's property system.
|
||||||
|
* Added new (much simpler) metar parsing code (removed older more
|
||||||
|
complex code.)
|
||||||
|
* Support VASI/PAPI lights correctly.
|
||||||
|
* Fixes to cloud animation.
|
||||||
|
* Updates to sky dome coloring as well as sun/moon coloring.
|
||||||
|
* Vary environment lighting with visibility (subtlety.)
|
||||||
|
* Support control of alpha test in model animation.
|
||||||
|
* Complete rewrite of the event manager.
|
||||||
|
* Updates to low level socket code to make it more flexible.
|
||||||
|
* Win32 serial port communication fixes.
|
||||||
|
* sg_geodesy rewritten to be more accurate and robust and symmetric.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.4
|
||||||
|
* October 22, 2003
|
||||||
|
|
||||||
|
* Removed Metakit, FlightGear no longer uses it.
|
||||||
|
* Removed all glut dependencies from SimGear.
|
||||||
|
* Moved FGEventMgr and FGSubsystemMgr over to SimGear.
|
||||||
|
* Some more incremental work on 3D clouds.
|
||||||
|
* Added some "fastmath" functions.
|
||||||
|
* Some lighting tweaks and fixes (especially for taxiways.)
|
||||||
|
* Added support for "blend" and "scale" and "texture" animations.
|
||||||
|
* Added support for animating rotations around an arbitrary axis (so the
|
||||||
|
aircraft designer isn't forced to figure out animations as a combination
|
||||||
|
of rotations around X, Y, and X axes.
|
||||||
|
* Updates to sky dome modeling and make cloud layers follow the curve
|
||||||
|
of the earth (sort of.)
|
||||||
|
* Updates to sky dome, cloud, and sunrise/sunset color and lighting
|
||||||
|
effects to make them more realistic and lifelike.
|
||||||
|
* Better support for detecting and using OpenGL extensions at run time.
|
||||||
|
* Add support for win32-pthreads in MSVC.NET
|
||||||
|
* Various MSVC fixes.
|
||||||
|
* Various Solaris fixes.
|
||||||
|
* Various cygwin/mingwin fixes.
|
||||||
|
* Various Mac OS X fixes.
|
||||||
|
* Various Irix fixes.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.3
|
||||||
|
* June 3, 2003
|
||||||
|
|
||||||
|
* Fix a compile problem for cygwin
|
||||||
|
* Updated/tweaked doxygen documentation in several areas
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.2
|
||||||
|
* June 2, 2003
|
||||||
|
|
||||||
|
* Moved quite a bit of low level model management and "state"
|
||||||
|
management code from FlightGear into SimGear and did a substantial
|
||||||
|
amount of restructuring and dependency clean up in the process.
|
||||||
|
Created a "scene" subdirectory with sub-subdirectories for material
|
||||||
|
management, basic model and model animation management, sky
|
||||||
|
rendering, and low level loaders for the "TerraGear" tile object format.
|
||||||
|
* Removed support of the flat shaded and non-textured material
|
||||||
|
property variants. You can still do these things, but extra states
|
||||||
|
are no longer set up automatically.
|
||||||
|
* Removed 3d clouds from the default build ... these need a maintainer
|
||||||
|
or better yet, a complete plib-based rewrite.
|
||||||
|
* Moved the FlightGear sound effect manager code over to SimGear.
|
||||||
|
* Updated the cloud layer surface to better follow the inverted bowl
|
||||||
|
shape.
|
||||||
|
* Much work on cloud/sky coloring, and also much work on
|
||||||
|
sunset/sunrise coloring.
|
||||||
|
* Fixed an obscure bug in cloud texture loading which caused each
|
||||||
|
cloud texture to be loaded 5 times. Ouch!
|
||||||
|
* Various class and function renaming to make them better fit into the
|
||||||
|
standard SimGear naming scheme.
|
||||||
|
* Added some additional convenience functions to the SGPath class.
|
||||||
|
* Upgraded the distributed version of metakit.
|
||||||
|
* FreeBSD fixes.
|
||||||
|
* Irix fixes (better STL/ISO C++ header support.)
|
||||||
|
* Mingwin fixes.
|
||||||
|
* Better MacOS support
|
||||||
|
* MSVC fixes.
|
||||||
|
|
||||||
|
|
||||||
|
New in 0.3.1
|
||||||
|
* December 4, 2002
|
||||||
|
|
||||||
|
* Fix a major packaging blunder with several missing files.
|
||||||
|
|
||||||
|
|
||||||
New in 0.3.0
|
New in 0.3.0
|
||||||
* December 3, 2002
|
* December 3, 2002
|
||||||
|
|
||||||
@@ -15,7 +209,7 @@ New in 0.2.0
|
|||||||
* Removed efence support (in favor of valgrind.)
|
* Removed efence support (in favor of valgrind.)
|
||||||
|
|
||||||
* Added a javascript interpreter.
|
* Added a javascript interpreter.
|
||||||
* SGSocket reimplimented on top of plib/net libs.
|
* SGSocket reimplemented on top of plib/net libs.
|
||||||
* Added a new random number generation algorithm.
|
* Added a new random number generation algorithm.
|
||||||
* Total rewrite of the strutils package.
|
* Total rewrite of the strutils package.
|
||||||
|
|
||||||
@@ -25,7 +219,7 @@ New in 0.2.0
|
|||||||
* Mac OS X fixes.
|
* Mac OS X fixes.
|
||||||
* Irix fixes.
|
* Irix fixes.
|
||||||
* Code clean ups to remove warning messages.
|
* Code clean ups to remove warning messages.
|
||||||
* Optimizations in sg_binobj to reduce the amout of memory copying
|
* Optimizations in sg_binobj to reduce the amount of memory copying
|
||||||
needed when loading a binobj format file.
|
needed when loading a binobj format file.
|
||||||
* Fixed a couple places where variables could be used before they were
|
* Fixed a couple places where variables could be used before they were
|
||||||
initialized.
|
initialized.
|
||||||
@@ -45,7 +239,7 @@ New in 0.0.18
|
|||||||
* Upgrade to metakit-2.4.2-32.tar.gz (latest upstream release)
|
* Upgrade to metakit-2.4.2-32.tar.gz (latest upstream release)
|
||||||
* Added support for point objects in the scenery file format.
|
* Added support for point objects in the scenery file format.
|
||||||
* Additions to the binary file format to make it *much* more flexible.
|
* Additions to the binary file format to make it *much* more flexible.
|
||||||
For each major primative type: points, triangles, fans, and strips, you
|
For each major primitive type: points, triangles, fans, and strips, you
|
||||||
can specify an index list of vertices, normals, colors, and texture
|
can specify an index list of vertices, normals, colors, and texture
|
||||||
coordinates. You can skip any of these you like to save on space.
|
coordinates. You can skip any of these you like to save on space.
|
||||||
* Added support for new file features in the binary -> ascii scenery file
|
* Added support for new file features in the binary -> ascii scenery file
|
||||||
@@ -96,7 +290,7 @@ New in 0.0.17pre1
|
|||||||
|
|
||||||
New in 0.0.16
|
New in 0.0.16
|
||||||
* July 12, 2001
|
* July 12, 2001
|
||||||
* Various changes to the property manager implimentation to better support
|
* Various changes to the property manager implementation to better support
|
||||||
dumping out the desired portions of the property tree to file.
|
dumping out the desired portions of the property tree to file.
|
||||||
* Don't compile the metakit demos by default (causes problems for Irix)'
|
* Don't compile the metakit demos by default (causes problems for Irix)'
|
||||||
* Other various tweaks for Irix.
|
* Other various tweaks for Irix.
|
||||||
@@ -139,7 +333,7 @@ New in 0.0.15
|
|||||||
read/write routines.
|
read/write routines.
|
||||||
* Added doxygen comments for all public interface code. Documentation
|
* Added doxygen comments for all public interface code. Documentation
|
||||||
can be accessed via the SimGear web page.
|
can be accessed via the SimGear web page.
|
||||||
* Many FG -> SG name space changes for better consistancy throughout
|
* Many FG -> SG name space changes for better consistency throughout
|
||||||
this package.
|
this package.
|
||||||
* Added property aliases, repeated name tags, and a general xml
|
* Added property aliases, repeated name tags, and a general xml
|
||||||
inclusion facilities. Many other property manager clean ups
|
inclusion facilities. Many other property manager clean ups
|
||||||
@@ -230,4 +424,4 @@ New in 0.0.4
|
|||||||
|
|
||||||
|
|
||||||
New in 0.0.3
|
New in 0.0.3
|
||||||
* Release that conincides with FlightGear-0.7.2
|
* Release that coincides with FlightGear-0.7.2
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[This file is mirrored in both the FlightGear and SimGear packages.]
|
||||||
|
|
||||||
|
You *must* have the development components of OpenAL installed on your system
|
||||||
|
to build FlightGear!" You can get a copy here:
|
||||||
|
|
||||||
|
http://www.openal.org
|
||||||
|
|
||||||
|
Build notes:
|
||||||
|
|
||||||
|
The OpenAL developers do not make "versioned" releases so we recommend that
|
||||||
|
you pull the latest version via anonymous CVS (follow the instructions at
|
||||||
|
the OpenAL web site) and build/install that.
|
||||||
-285
@@ -1,285 +0,0 @@
|
|||||||
For your convenience (and with the author's permission) a copy of the
|
|
||||||
MetaKit source is bundled with SimGear in $(top_srcdir)/src-libs/.
|
|
||||||
You must have metakit installed before you can build SimGear.
|
|
||||||
|
|
||||||
- Most linux distributions have a metakit package. For linux
|
|
||||||
developers, we recommend ysou install your distributions package
|
|
||||||
rather than building from source.
|
|
||||||
|
|
||||||
- For developers on most other platforms, you will have to build
|
|
||||||
metakit from source and install it yourself. For your convenience a
|
|
||||||
tar ball of the metakit source is included with the simgear source
|
|
||||||
distribution. Untar the metakit source, and follow the included
|
|
||||||
build and installation instructions.
|
|
||||||
|
|
||||||
Once metakit is installed you can return to configuring and building
|
|
||||||
Simgear.
|
|
||||||
|
|
||||||
=============================================================================
|
|
||||||
|
|
||||||
Potentially important build note:
|
|
||||||
|
|
||||||
Later on when you are linking programs with -lmk4 (i.e. FlightGear or one
|
|
||||||
of it's associated programs) if you come across an error similar to the
|
|
||||||
following:
|
|
||||||
|
|
||||||
c++ -Wall -O2 -L/usr/local/lib -o gensimple gensimple.o libAirports.a
|
|
||||||
-lsgdebug -lsgmisc -lmk4 -lz -lm
|
|
||||||
/usr/local/lib/libmk4.a(view.o)(.text+0x1c8):view.cpp: multiple definition
|
|
||||||
of `c4_View::~c4_View(void)'
|
|
||||||
libAirports.a(simple.o)(.text$_$_7c4_View+0x0):simple.cxx: first defined
|
|
||||||
here
|
|
||||||
collect2: ld returned 1 exit status
|
|
||||||
make[2]: *** [gensimple] Error 1
|
|
||||||
make[2]: Leaving directory `/home/curt/FlightGear-0.7.7/src/Airports'
|
|
||||||
make[1]: *** [all-recursive] Error 1
|
|
||||||
make[1]: Leaving directory `/home/curt/FlightGear-0.7.7/src'
|
|
||||||
make: *** [all-recursive] Error 1
|
|
||||||
|
|
||||||
Then you need to come back and rebuild Metakit with the -DNDEBUG flag.
|
|
||||||
For unix/cygwin systems, modify the unix/Makefile file and add -DNDEBUG
|
|
||||||
to the CFLAGS line.
|
|
||||||
|
|
||||||
Now we return you to the official metakit readme ... :-)
|
|
||||||
|
|
||||||
|
|
||||||
The MetaKit Library 2.01 March 2000
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
WHAT IT IS - MetaKit is an embeddable database which runs on Unix, Windows,
|
|
||||||
Macintosh, and other platforms. It lets you build applications which
|
|
||||||
store their data efficiently, in a portable way, and which will not need a
|
|
||||||
complex runtime installation. In terms of the data model, MetaKit takes
|
|
||||||
the middle ground between RDBMS, OODBMS, and flat-file databases - yet it
|
|
||||||
is quite different from each of them.
|
|
||||||
|
|
||||||
WHAT IT ISN'T - MetaKit is not: 1) multi-user/-threading, 2) scalable to
|
|
||||||
gigabytes, 3) proprietary software, 4) full of bugs, 5) just a toy.
|
|
||||||
|
|
||||||
TECHNOLOGY - Everything is stored variable-sized yet with efficient positional
|
|
||||||
row access. Changing an existing datafile structure is as simple as re-
|
|
||||||
opening it with that new structure. All changes are transacted. You can
|
|
||||||
mix and match software written in C++, Python, and Tcl. Things can't get
|
|
||||||
much more flexible...
|
|
||||||
|
|
||||||
CORE - The Metakit core library is written in C++. It has a code footprint of
|
|
||||||
just over 100 Kb on Windows. It can be used as DLL, or linked statically.
|
|
||||||
Debug builds include extensive assertion checks to catch problems early.
|
|
||||||
|
|
||||||
PYTHON - The binding for Python is called "Mk4py". It uses SCXX by Gordon
|
|
||||||
McMillan as C++ glue interface. The source is in directory "python/".
|
|
||||||
|
|
||||||
TCL/TK - The MK extension for Tcl is called "Mk4tcl". It is being used in a
|
|
||||||
number of commercial projects, for in-house use as well as in commercially
|
|
||||||
distributed products. The source is in directory "tcl/".
|
|
||||||
|
|
||||||
LICENSE AND SUPPORT - MetaKit 2.01 is distributed as open source software (the
|
|
||||||
X/MIT-style license is at the end of this document). Commercial support
|
|
||||||
is available through an Enterprise License, see the URL mentioned below.
|
|
||||||
|
|
||||||
DOCUMENTATION - All documentation uses HTML. The main page is "MetaKit.html",
|
|
||||||
which leads to the rest of the documentation in the "doc/" directory.
|
|
||||||
|
|
||||||
WEBSITE URLS - The main pages on the world wide web, for news and downloads:
|
|
||||||
Homepage: http://www.equi4.com/metakit/
|
|
||||||
Python news: http://www.equi4.com/metakit/python.html
|
|
||||||
Tcl/Tk news: http://www.equi4.com/metakit/tcl.html
|
|
||||||
License info: http://www.equi4.com/metakit/license.html
|
|
||||||
Contact info: http://www.equi4.com/contact.html
|
|
||||||
|
|
||||||
|
|
||||||
INSTALLATION
|
|
||||||
============
|
|
||||||
|
|
||||||
Starting with this release, all platform builds and language bindings are now
|
|
||||||
designed to work from a single common "builds/" directory. It turns out to
|
|
||||||
be impossible to keep build side-effects limited to *just* this directory
|
|
||||||
(CodeWarrior can't be told where to place its temp data, and Visual C++ still
|
|
||||||
alters a few files next to the project ".dsw" file, to name two offenders).
|
|
||||||
|
|
||||||
UNIX
|
|
||||||
|
|
||||||
It is no longer advised to build the Unix code in the "unix/" directory.
|
|
||||||
Instead, you should perform the following steps:
|
|
||||||
% cd builds
|
|
||||||
% ../unix/configure
|
|
||||||
% make
|
|
||||||
% make test
|
|
||||||
And optionally (this only installs the core lib, not script extensions):
|
|
||||||
% make install
|
|
||||||
|
|
||||||
By switching to the "builds/" directory, you will keep the distribution
|
|
||||||
directory tree 100% unaltered. All changes are made in this subdir, and
|
|
||||||
all final build results are left behind in this same subdir.
|
|
||||||
|
|
||||||
Nastiness: if you build Mk4tcl, please do a "make Mk4tcl.so" as well.
|
|
||||||
And if you intend to create the Python extension, do a "make Mk4py.so".
|
|
||||||
The "libmk4tcl.so.0.0.0" and "libMk4py.so.0.0.0" targets are bogus ones.
|
|
||||||
|
|
||||||
You will probably have to make changes in the makefile to locate the
|
|
||||||
proper includes and libs for Python (Tcl has been fixed, see "--with-tcl).
|
|
||||||
You probably only need to adjust "CXX_SWITCHES_PY" to find the headers.
|
|
||||||
|
|
||||||
To build with STL containers and strings, you can do the following:
|
|
||||||
make CXXFLAGS='-Dq4_STD' test # add -O3 etc, as needed
|
|
||||||
This passes the test suite on Linux RedHat 5.2 with gcc 2.95-2.
|
|
||||||
|
|
||||||
See below for some platform-specific build notes.
|
|
||||||
|
|
||||||
WINDOWS
|
|
||||||
|
|
||||||
There is a "win/" directory which contains subdirectories for a number of
|
|
||||||
compiler systems. MetaKit has been built with many different compilers
|
|
||||||
in the past (Microsoft, Borland, Watcom, Symantec, Metrowerks, Optima),
|
|
||||||
but to preserve my sanity (there are 12 configurations for MSVC6 alone!),
|
|
||||||
I am limiting myself to MSVC6, MWCW5, Borland C++ Builder 4, and Cygwin.
|
|
||||||
|
|
||||||
The MS Visual C++ 6.0 project is "win/msvc60/mksrc.dsw", with subprojects
|
|
||||||
for the C++ demo (mkdemo), building dll's (mkdll), static libs (mklib),
|
|
||||||
regression tests (mktest), as well as Tcl (mktcl) and Python (mkpython).
|
|
||||||
It has been set up to place all intermediate files and final results in
|
|
||||||
the "builds/" subdirectory, even though you'll launch it from "win/".
|
|
||||||
|
|
||||||
To build with STL containers and strings under MSVC, define "q4_STD".
|
|
||||||
To build with MFC containers and strings under MSVC, define "q4_MFC".
|
|
||||||
|
|
||||||
The Metrowerks Codewarrior project is in the "mac/" directory, and can be
|
|
||||||
used to build both Mac and Windows versions (on either Mac *or* Windows).
|
|
||||||
The core libraries are built with "mac/cw5.mcp", demos / tests are built
|
|
||||||
with "cw5apps.mcp", Tcl is "cw5tcl.mcp", and Python is "cw5python.mcp".
|
|
||||||
|
|
||||||
The Borland C++ Builder projects have not yet been incorporated in this
|
|
||||||
release, but the "KitViewer" application is an example of how to use BCB.
|
|
||||||
|
|
||||||
The Cygwin build (B20.1 / gcc 2.95.2) is different, because it uses the
|
|
||||||
unix autoconf system, and must be launched as described above for UNIX.
|
|
||||||
I have upgraded to the latest development of libtool to be able to build
|
|
||||||
DLL's with Cygwin. You can build the "-mno-cygwin" version by editing
|
|
||||||
the Makefile by hand and adding that option to CXXFLAGS.
|
|
||||||
|
|
||||||
Rob Bloodgood adds that the following GCC options are for maximum code
|
|
||||||
efficiency on x86 hardware: "-O2 -m486 -malign-loops=2 -malign-jumps=2".
|
|
||||||
I have not yet tried this myself, but am passing on the tip.
|
|
||||||
|
|
||||||
MACINTOSH
|
|
||||||
|
|
||||||
The Mac version requires Metrowerks CodeWarrior 5. See the info above
|
|
||||||
in the Windows section (MWCW is multi-platform). The projects are all
|
|
||||||
located in the "mac/" folder, which is also where MWCW will place its own
|
|
||||||
"... Data" folders with intermediate results. As with all other setups,
|
|
||||||
final results are made to end up in the "builds/" directory.
|
|
||||||
|
|
||||||
Static 68K builds appear to work fine, the 68K CFM variants will need
|
|
||||||
some more work (I couldn't get the libraries to export their symbols).
|
|
||||||
|
|
||||||
|
|
||||||
PLATFORM-SPECIFIC NOTES
|
|
||||||
=======================
|
|
||||||
|
|
||||||
* Linux RH 5.2 / gcc 2.95.2
|
|
||||||
|
|
||||||
Builds with gcc 2.95.2 work out of the box. The Tcl extension ends up as
|
|
||||||
".libs/libmk4tcl.so.0.0.0" (to please libtool), and should be renamed to
|
|
||||||
"Mk4tcl.so". Similarly, ".libs/libMk4py.so.0.0.0" is in fact the Python
|
|
||||||
extension, and *must* be renamed to "Mk4py.so" to call it from Python.
|
|
||||||
|
|
||||||
The core MK libs end up as ".libs/libmk4.a" and ".libs/libmk4.so.0.0.0".
|
|
||||||
|
|
||||||
* Solaris 2.6 / gcc 2.8.1
|
|
||||||
|
|
||||||
The Solaris builds are nasty for several reasons:
|
|
||||||
|
|
||||||
- I do not own such a machine, and often have to make arrangements
|
|
||||||
(or fight limited space on one of the machines I can telnet to).
|
|
||||||
- The gcc 2.8.1 optimizer appears to be buggy, I have had to turn off
|
|
||||||
the default "-O3" flag to prevent compiler crashes (several files).
|
|
||||||
This problems appears to be resolved with gcc 2.95.
|
|
||||||
- Locking on Solaris (especially w.r.t NFS) remains a mystery to me.
|
|
||||||
The Tcl and Python extensions both use locking (the core not yet).
|
|
||||||
See tcl/Mk4tcl.cpp around line 520, and python/PyStorage.cpp around
|
|
||||||
line 80 for details. It's all pretty messy, and not 100% correct.
|
|
||||||
|
|
||||||
Despite this, I'm doing my best to resolve these issues. Having a solid
|
|
||||||
build of the core *and* of Tcl / Python extensions is quite important.
|
|
||||||
|
|
||||||
* Other Unix systems
|
|
||||||
|
|
||||||
No further notes, though many systems will build fine out of the box.
|
|
||||||
|
|
||||||
* Windows
|
|
||||||
|
|
||||||
MSVC 6 builds MK as static lib and as DLL (universal config, I have not
|
|
||||||
yet created build versions with MFC or STL, mainly because MK can now be
|
|
||||||
used in all contexts regardless of how it was built). The Python and Tcl
|
|
||||||
extensions build as dynamic extensions (a static build is easy to add).
|
|
||||||
|
|
||||||
MWCW 5 builds MK as static lib and as DLL (interestingly enough, the DLL
|
|
||||||
is slightly smaller than MSVC 6 - 102 vs 108 Kb - when their runtimes are
|
|
||||||
linked in dynamically as well). I have not added Win builds for Tcl or
|
|
||||||
Python, since MSVC 6 has those already.
|
|
||||||
|
|
||||||
Cygwin B20.1, with gcc 2.95.2 ugrade, also builds MK as static lib and as
|
|
||||||
DLL. Both "pure" Cygwin (i.e. requiring cygwin1.dll) and mingw32 (using
|
|
||||||
the -mno-cygwin flag) build, but there are some hairy include issues when
|
|
||||||
it comes to choosing the right locking model for Tcl and Python. These
|
|
||||||
issues have not been resolved fully.
|
|
||||||
|
|
||||||
* Macintosh
|
|
||||||
|
|
||||||
MWCW 5 builds PPC shared libs, PPC static libs, and 68K static libraries.
|
|
||||||
|
|
||||||
Building 68K CFM libraries leads to a "MetaKit 68K.shlb" which comes out
|
|
||||||
of the linker without errors, but the result does not seem to have any
|
|
||||||
export symbols defined (despite the fact that the library is over 200 K).
|
|
||||||
Because of that, I've been unable to build apps or Mk4tcl/Mk4py so far.
|
|
||||||
|
|
||||||
The other three configurations build, but for some reason MK's regression
|
|
||||||
test stops at L03 (everything up to that point looks ok, i.e. over 90%).
|
|
||||||
|
|
||||||
The Mk4tcl PPC extension appears to work (quick manual test), and so does
|
|
||||||
the Python extension, "Mk4py.PPC.slb". I have not yet given these two
|
|
||||||
a serious workout, hoping to have a basic test harness in place soon.
|
|
||||||
|
|
||||||
* VMS, BeOS, ...
|
|
||||||
|
|
||||||
No news yet, please report your findings with any other platform builds.
|
|
||||||
|
|
||||||
|
|
||||||
WHAT'S MISSING HERE
|
|
||||||
===================
|
|
||||||
|
|
||||||
- a section on basic concepts (or maybe it doesn't belong here?)
|
|
||||||
- a section on getting started (C++, Python, Tcl all differ - point to
|
|
||||||
the respective intro pages)
|
|
||||||
- maybe a small sample for each of C++ / Tcl / Python, to give an idea
|
|
||||||
- mention TclKit, scripted docs (WiKit/Tequila?), VFS?
|
|
||||||
- I forgot... please tell me :)
|
|
||||||
|
|
||||||
|
|
||||||
LICENSE AND COPYRIGHT STATEMENT
|
|
||||||
===============================
|
|
||||||
|
|
||||||
Copyright (c) 1996-2000 Jean-Claude Wippler
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
||||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
-- Jean-Claude Wippler <jcw@equi4.com>
|
|
||||||
+5
-170
@@ -1,173 +1,8 @@
|
|||||||
For your convenience and allowed by zlib's license terms:
|
zlib is prerequisite for compiling SimGear and FlightGear. You can fetch
|
||||||
http://www.gzip.org/zlib/zlib_license.html a copy of the zlib source
|
the latest version of zlib from:
|
||||||
is bundled with SimGear in $(top_srcdir)/src-libs/. You must have
|
|
||||||
zlib installed before you can build SimGear.
|
|
||||||
|
|
||||||
- Most linux distributions have a zlib package. For linux
|
http://www.zlib.net
|
||||||
developers, we recommend ysou install your distributions package
|
|
||||||
rather than building from source.
|
|
||||||
|
|
||||||
- Cygwin installs zlib automatically.
|
Most modern unix distributions (and cygwin) come with a version of zlib
|
||||||
|
already installed or available to install as a package.
|
||||||
|
|
||||||
- For developers on most other platforms, you will have to build
|
|
||||||
zlib from source and install it yourself. For your convenience a
|
|
||||||
tar ball of the zlib source is included with the simgear source
|
|
||||||
distribution. Untar the zlib source, and follow the included
|
|
||||||
build and installation instructions.
|
|
||||||
|
|
||||||
Once zlib is installed you can return to configuring and building
|
|
||||||
Simgear.
|
|
||||||
|
|
||||||
We now send you to the official zlib README ...
|
|
||||||
|
|
||||||
|
|
||||||
=============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
zlib 1.1.4 is a general purpose data compression library. All the code
|
|
||||||
is thread safe. The data format used by the zlib library
|
|
||||||
is described by RFCs (Request for Comments) 1950 to 1952 in the files
|
|
||||||
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
|
|
||||||
format) and rfc1952.txt (gzip format). These documents are also available in
|
|
||||||
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
|
|
||||||
|
|
||||||
All functions of the compression library are documented in the file zlib.h
|
|
||||||
(volunteer to write man pages welcome, contact jloup@gzip.org). A usage
|
|
||||||
example of the library is given in the file example.c which also tests that
|
|
||||||
the library is working correctly. Another example is given in the file
|
|
||||||
minigzip.c. The compression library itself is composed of all source files
|
|
||||||
except example.c and minigzip.c.
|
|
||||||
|
|
||||||
To compile all files and run the test program, follow the instructions
|
|
||||||
given at the top of Makefile. In short "make test; make install"
|
|
||||||
should work for most machines. For Unix: "./configure; make test; make install"
|
|
||||||
For MSDOS, use one of the special makefiles such as Makefile.msc.
|
|
||||||
For VMS, use Make_vms.com or descrip.mms.
|
|
||||||
|
|
||||||
Questions about zlib should be sent to <zlib@gzip.org>, or to
|
|
||||||
Gilles Vollant <info@winimage.com> for the Windows DLL version.
|
|
||||||
The zlib home page is http://www.zlib.org or http://www.gzip.org/zlib/
|
|
||||||
Before reporting a problem, please check this site to verify that
|
|
||||||
you have the latest version of zlib; otherwise get the latest version and
|
|
||||||
check whether the problem still exists or not.
|
|
||||||
|
|
||||||
PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html
|
|
||||||
before asking for help.
|
|
||||||
|
|
||||||
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
|
|
||||||
issue of Dr. Dobb's Journal; a copy of the article is available in
|
|
||||||
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
|
|
||||||
|
|
||||||
The changes made in version 1.1.4 are documented in the file ChangeLog.
|
|
||||||
The only changes made since 1.1.3 are bug corrections:
|
|
||||||
|
|
||||||
- ZFREE was repeated on same allocation on some error conditions.
|
|
||||||
This creates a security problem described in
|
|
||||||
http://www.zlib.org/advisory-2002-03-11.txt
|
|
||||||
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
|
|
||||||
- Avoid accesses before window for invalid distances with inflate window
|
|
||||||
less than 32K.
|
|
||||||
- force windowBits > 8 to avoid a bug in the encoder for a window size
|
|
||||||
of 256 bytes. (A complete fix will be available in 1.1.5).
|
|
||||||
|
|
||||||
The beta version 1.1.5beta includes many more changes. A new official
|
|
||||||
version 1.1.5 will be released as soon as extensive testing has been
|
|
||||||
completed on it.
|
|
||||||
|
|
||||||
|
|
||||||
Unsupported third party contributions are provided in directory "contrib".
|
|
||||||
|
|
||||||
A Java implementation of zlib is available in the Java Development Kit
|
|
||||||
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
|
|
||||||
See the zlib home page http://www.zlib.org for details.
|
|
||||||
|
|
||||||
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
|
|
||||||
is in the CPAN (Comprehensive Perl Archive Network) sites
|
|
||||||
http://www.cpan.org/modules/by-module/Compress/
|
|
||||||
|
|
||||||
A Python interface to zlib written by A.M. Kuchling <amk@magnet.com>
|
|
||||||
is available in Python 1.5 and later versions, see
|
|
||||||
http://www.python.org/doc/lib/module-zlib.html
|
|
||||||
|
|
||||||
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com>
|
|
||||||
is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html
|
|
||||||
|
|
||||||
An experimental package to read and write files in .zip format,
|
|
||||||
written on top of zlib by Gilles Vollant <info@winimage.com>, is
|
|
||||||
available at http://www.winimage.com/zLibDll/unzip.html
|
|
||||||
and also in the contrib/minizip directory of zlib.
|
|
||||||
|
|
||||||
|
|
||||||
Notes for some targets:
|
|
||||||
|
|
||||||
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
|
|
||||||
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
|
|
||||||
The zlib DLL support was initially done by Alessandro Iacopetti and is
|
|
||||||
now maintained by Gilles Vollant <info@winimage.com>. Check the zlib DLL
|
|
||||||
home page at http://www.winimage.com/zLibDll
|
|
||||||
|
|
||||||
From Visual Basic, you can call the DLL functions which do not take
|
|
||||||
a structure as argument: compress, uncompress and all gz* functions.
|
|
||||||
See contrib/visual-basic.txt for more information, or get
|
|
||||||
http://www.tcfb.com/dowseware/cmp-z-it.zip
|
|
||||||
|
|
||||||
- For 64-bit Irix, deflate.c must be compiled without any optimization.
|
|
||||||
With -O, one libpng test fails. The test works in 32 bit mode (with
|
|
||||||
the -n32 compiler flag). The compiler bug has been reported to SGI.
|
|
||||||
|
|
||||||
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
|
|
||||||
it works when compiled with cc.
|
|
||||||
|
|
||||||
- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1
|
|
||||||
is necessary to get gzprintf working correctly. This is done by configure.
|
|
||||||
|
|
||||||
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works
|
|
||||||
with other compilers. Use "make test" to check your compiler.
|
|
||||||
|
|
||||||
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
|
|
||||||
|
|
||||||
- For Turbo C the small model is supported only with reduced performance to
|
|
||||||
avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
|
|
||||||
|
|
||||||
- For PalmOs, see http://www.cs.uit.no/~perm/PASTA/pilot/software.html
|
|
||||||
Per Harald Myrvang <perm@stud.cs.uit.no>
|
|
||||||
|
|
||||||
|
|
||||||
Acknowledgments:
|
|
||||||
|
|
||||||
The deflate format used by zlib was defined by Phil Katz. The deflate
|
|
||||||
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
|
|
||||||
people who reported problems and suggested various improvements in zlib;
|
|
||||||
they are too numerous to cite here.
|
|
||||||
|
|
||||||
Copyright notice:
|
|
||||||
|
|
||||||
(C) 1995-2002 Jean-loup Gailly and Mark Adler
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
|
|
||||||
Jean-loup Gailly Mark Adler
|
|
||||||
jloup@gzip.org madler@alumni.caltech.edu
|
|
||||||
|
|
||||||
If you use the zlib library in a product, we would appreciate *not*
|
|
||||||
receiving lengthy legal documents to sign. The sources are provided
|
|
||||||
for free but without warranty of any kind. The library has been
|
|
||||||
entirely written by Jean-loup Gailly and Mark Adler; it does not
|
|
||||||
include third-party code.
|
|
||||||
|
|
||||||
If you redistribute modified sources, we would appreciate that you include
|
|
||||||
in the file ChangeLog history information documenting your changes.
|
|
||||||
|
|||||||
+938
-584
File diff suppressed because it is too large
Load Diff
-24
@@ -15,30 +15,6 @@ Package=<4>
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
Project: "mklib"=".\SimGear\metakit-2.4.3\win\msvc60\mklib.dsp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "zlib"=".\SimGear\zlib.dsp" - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Global:
|
Global:
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
|
|||||||
@@ -47,6 +47,18 @@ Jean-Francois Doue
|
|||||||
http://www.animats.com/simpleppp/ftp/public_html/topics/developers.html
|
http://www.animats.com/simpleppp/ftp/public_html/topics/developers.html
|
||||||
|
|
||||||
|
|
||||||
|
Melchior Franz
|
||||||
|
METAR parser and fetcher. "material" animation (based on Jim Wilsons's
|
||||||
|
"emission" animation). Debugging and extension of property listener
|
||||||
|
features. Addition of removeChildren.
|
||||||
|
|
||||||
|
|
||||||
|
Mathias Froehlich
|
||||||
|
Reworked and cleaned up large parts of the infrastructure, of math
|
||||||
|
files, animations and rendering in preparation of a transition to
|
||||||
|
the OSG library. Added new handlers for shared and referenced objects.
|
||||||
|
|
||||||
|
|
||||||
Bruce Finney <bfinney@gte.net>
|
Bruce Finney <bfinney@gte.net>
|
||||||
MSVC5 compatibility.
|
MSVC5 compatibility.
|
||||||
|
|
||||||
@@ -71,6 +83,10 @@ Bruce Jackson of NASA <e.b.jackson@larc.nasa.gov>
|
|||||||
http://dcb.larc.nasa.gov/www/DCBStaff/ebj/ebj.html
|
http://dcb.larc.nasa.gov/www/DCBStaff/ebj/ebj.html
|
||||||
|
|
||||||
|
|
||||||
|
Maik Justus
|
||||||
|
Fixed an old bug in the SGPropertyNode class.
|
||||||
|
|
||||||
|
|
||||||
Richard Kaszeta <bofh@me.umn.edu>
|
Richard Kaszeta <bofh@me.umn.edu>
|
||||||
Contributed screen buffer to ppm screen shot routine.
|
Contributed screen buffer to ppm screen shot routine.
|
||||||
Rich has also helped in the early development of the Flight Gear "altitude
|
Rich has also helped in the early development of the Flight Gear "altitude
|
||||||
@@ -90,7 +106,12 @@ David Megginson <david@megginson.com>
|
|||||||
SimGear property manager/registry
|
SimGear property manager/registry
|
||||||
|
|
||||||
|
|
||||||
Curt Olson <curt@flightgear.org>
|
Tim Moore
|
||||||
|
Ported the (chrome) "shader" animation to OSG, and helped with porting
|
||||||
|
the "material" animation.
|
||||||
|
|
||||||
|
|
||||||
|
Curt Olson http://www.flightgear.org/~curt/
|
||||||
Curt is responsible for overall project and source code management.
|
Curt is responsible for overall project and source code management.
|
||||||
He has his hands in many of the areas.
|
He has his hands in many of the areas.
|
||||||
|
|
||||||
@@ -175,7 +196,7 @@ NOTE:
|
|||||||
----
|
----
|
||||||
|
|
||||||
THIS DOCUMENT WAS INITIALLY WRITTEN BY
|
THIS DOCUMENT WAS INITIALLY WRITTEN BY
|
||||||
Curt L. Olson <curt@flightgear.org>
|
Curt L. Olson <http://www.flightgear.org/~curt>
|
||||||
|
|
||||||
|
|
||||||
05 Jul 2000 Removed non-SimGear entries (CLO)
|
05 Jul 2000 Removed non-SimGear entries (CLO)
|
||||||
|
|||||||
+18
-18
@@ -3,7 +3,7 @@ dnl originally from ncftp 2.3.0
|
|||||||
dnl added wi_EXTRA_PDIR and wi_ANSI_C
|
dnl added wi_EXTRA_PDIR and wi_ANSI_C
|
||||||
dnl $Id$
|
dnl $Id$
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_EXTRA_IDIR, [
|
AC_DEFUN([wi_EXTRA_IDIR], [
|
||||||
incdir="$1"
|
incdir="$1"
|
||||||
if test -r $incdir ; then
|
if test -r $incdir ; then
|
||||||
case "$CPPFLAGS" in
|
case "$CPPFLAGS" in
|
||||||
@@ -25,7 +25,7 @@ dnl
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_EXTRA_LDIR, [
|
AC_DEFUN([wi_EXTRA_LDIR], [
|
||||||
mylibdir="$1"
|
mylibdir="$1"
|
||||||
if test -r $mylibdir ; then
|
if test -r $mylibdir ; then
|
||||||
case "$LDFLAGS" in
|
case "$LDFLAGS" in
|
||||||
@@ -47,7 +47,7 @@ dnl
|
|||||||
dnl __FP__
|
dnl __FP__
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_EXTRA_PDIR, [
|
AC_DEFUN([wi_EXTRA_PDIR], [
|
||||||
progdir="$1"
|
progdir="$1"
|
||||||
if test -r $progdir ; then
|
if test -r $progdir ; then
|
||||||
case "$PATH" in
|
case "$PATH" in
|
||||||
@@ -76,7 +76,7 @@ dnl
|
|||||||
dnl If you want to look for subdirectories in include/lib directories,
|
dnl If you want to look for subdirectories in include/lib directories,
|
||||||
dnl you pass the names in argument 3, otherwise pass a dash.
|
dnl you pass the names in argument 3, otherwise pass a dash.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_EXTRA_DIRS, [echo "checking for extra include and lib directories..." 1>&6
|
AC_DEFUN([wi_EXTRA_DIRS], [echo "checking for extra include and lib directories..." 1>&6
|
||||||
ifelse([$1], yes, [dnl
|
ifelse([$1], yes, [dnl
|
||||||
b1=`cd .. ; pwd`
|
b1=`cd .. ; pwd`
|
||||||
b2=`cd ../.. ; pwd`
|
b2=`cd ../.. ; pwd`
|
||||||
@@ -111,7 +111,7 @@ done
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_HPUX_CFLAGS,
|
AC_DEFUN([wi_HPUX_CFLAGS],
|
||||||
[AC_MSG_CHECKING(if HP-UX ansi C compiler flags are needed)
|
[AC_MSG_CHECKING(if HP-UX ansi C compiler flags are needed)
|
||||||
AC_REQUIRE([AC_PROG_CC])
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
os=`uname -s | tr '[A-Z]' '[a-z]'`
|
os=`uname -s | tr '[A-Z]' '[a-z]'`
|
||||||
@@ -144,7 +144,7 @@ AC_MSG_RESULT($ac_cv_hpux_flags)
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_CFLAGS, [AC_REQUIRE([AC_PROG_CC])
|
AC_DEFUN([wi_CFLAGS], [AC_REQUIRE([AC_PROG_CC])
|
||||||
wi_HPUX_CFLAGS
|
wi_HPUX_CFLAGS
|
||||||
if test "$CFLAGS" = "" ; then
|
if test "$CFLAGS" = "" ; then
|
||||||
CFLAGS="-O"
|
CFLAGS="-O"
|
||||||
@@ -165,7 +165,7 @@ wi_HPUX_CFLAGS
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_PROTOTYPES, [
|
AC_DEFUN([wi_PROTOTYPES], [
|
||||||
AC_MSG_CHECKING(if the compiler supports function prototypes)
|
AC_MSG_CHECKING(if the compiler supports function prototypes)
|
||||||
AC_TRY_COMPILE(,[extern void exit(int status);],[wi_cv_prototypes=yes
|
AC_TRY_COMPILE(,[extern void exit(int status);],[wi_cv_prototypes=yes
|
||||||
AC_DEFINE(PROTOTYPES)],wi_cv_prototypes=no)
|
AC_DEFINE(PROTOTYPES)],wi_cv_prototypes=no)
|
||||||
@@ -174,7 +174,7 @@ AC_MSG_RESULT($wi_cv_prototypes)
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_ANSI_C, [
|
AC_DEFUN([wi_ANSI_C], [
|
||||||
AC_MSG_CHECKING(ANSI-style function definitions)
|
AC_MSG_CHECKING(ANSI-style function definitions)
|
||||||
AC_TRY_COMPILE(,[int blubb(int x) { return 0; }],[wi_cv_ansi_funcs=yes
|
AC_TRY_COMPILE(,[int blubb(int x) { return 0; }],[wi_cv_ansi_funcs=yes
|
||||||
AC_DEFINE(ANSI_FUNCS)],wi_cv_ansi_funcs=no)
|
AC_DEFINE(ANSI_FUNCS)],wi_cv_ansi_funcs=no)
|
||||||
@@ -183,7 +183,7 @@ AC_MSG_RESULT($wi_cv_ansi_funcs)
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_HEADER_SYS_SELECT_H, [
|
AC_DEFUN([wi_HEADER_SYS_SELECT_H], [
|
||||||
# See if <sys/select.h> is includable after <sys/time.h>
|
# See if <sys/select.h> is includable after <sys/time.h>
|
||||||
if test "$ac_cv_header_sys_time_h" = no ; then
|
if test "$ac_cv_header_sys_time_h" = no ; then
|
||||||
AC_CHECK_HEADERS(sys/time.h sys/select.h)
|
AC_CHECK_HEADERS(sys/time.h sys/select.h)
|
||||||
@@ -211,7 +211,7 @@ fi
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_LIB_RESOLV, [
|
AC_DEFUN([wi_LIB_RESOLV], [
|
||||||
# See if we could access two well-known sites without help of any special
|
# See if we could access two well-known sites without help of any special
|
||||||
# libraries, like resolv.
|
# libraries, like resolv.
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ dnl
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_DEFUN(wi_LIB_NSL, [
|
AC_DEFUN([wi_LIB_NSL], [
|
||||||
AC_MSG_CHECKING(if we can use -lnsl)
|
AC_MSG_CHECKING(if we can use -lnsl)
|
||||||
ac_save_LIBS="$LIBS";
|
ac_save_LIBS="$LIBS";
|
||||||
LIBS="$LIBS -lnsl";
|
LIBS="$LIBS -lnsl";
|
||||||
@@ -261,7 +261,7 @@ dnl
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_DEFUN(nc_PATH_PROG_ZCAT, [
|
AC_DEFUN([nc_PATH_PROG_ZCAT], [
|
||||||
AC_PATH_PROG(GZCAT,gzcat)
|
AC_PATH_PROG(GZCAT,gzcat)
|
||||||
AC_PATH_PROG(ZCAT,zcat)
|
AC_PATH_PROG(ZCAT,zcat)
|
||||||
if test "x$GZCAT" = x ; then
|
if test "x$GZCAT" = x ; then
|
||||||
@@ -287,7 +287,7 @@ fi
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_SYSV_EXTRA_DIRS, [
|
AC_DEFUN([wi_SYSV_EXTRA_DIRS], [
|
||||||
# Use System V because their curses extensions are required. This must
|
# Use System V because their curses extensions are required. This must
|
||||||
# be done early so we use the -I and -L in the library checks also.
|
# be done early so we use the -I and -L in the library checks also.
|
||||||
# This is mostly a Solaris/SunOS hack. Note that doing this will also
|
# This is mostly a Solaris/SunOS hack. Note that doing this will also
|
||||||
@@ -305,7 +305,7 @@ fi
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_DEFINE_UNAME, [
|
AC_DEFUN([wi_DEFINE_UNAME], [
|
||||||
# Get first 127 chars of all uname information. Some folks have
|
# Get first 127 chars of all uname information. Some folks have
|
||||||
# way too much stuff there, so grab only the first 127.
|
# way too much stuff there, so grab only the first 127.
|
||||||
unam=`uname -a 2>/dev/null | cut -c1-127`
|
unam=`uname -a 2>/dev/null | cut -c1-127`
|
||||||
@@ -316,7 +316,7 @@ fi
|
|||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN(wi_READLINE_WITH_NCURSES, [
|
AC_DEFUN([wi_READLINE_WITH_NCURSES], [
|
||||||
# Readline and Ncurses could both define "backspace".
|
# Readline and Ncurses could both define "backspace".
|
||||||
# Warn about this if we have both things in our definitions list.
|
# Warn about this if we have both things in our definitions list.
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ dnl
|
|||||||
|
|
||||||
dnl AC_EXT_DAYLIGHT
|
dnl AC_EXT_DAYLIGHT
|
||||||
dnl Check for an external variable daylight. Stolen from w3c-libwww.
|
dnl Check for an external variable daylight. Stolen from w3c-libwww.
|
||||||
AC_DEFUN(AC_EXT_DAYLIGHT,
|
AC_DEFUN([AC_EXT_DAYLIGHT],
|
||||||
[ AC_MSG_CHECKING(int daylight variable)
|
[ AC_MSG_CHECKING(int daylight variable)
|
||||||
AC_TRY_COMPILE([#include <time.h>], [return daylight;],
|
AC_TRY_COMPILE([#include <time.h>], [return daylight;],
|
||||||
have_daylight=yes,
|
have_daylight=yes,
|
||||||
@@ -362,7 +362,7 @@ AC_MSG_RESULT($have_daylight)
|
|||||||
|
|
||||||
dnl AC_EXT_TIMEZONE
|
dnl AC_EXT_TIMEZONE
|
||||||
dnl Check for an external variable timezone. Stolen from tcl-8.0.
|
dnl Check for an external variable timezone. Stolen from tcl-8.0.
|
||||||
AC_DEFUN(AC_EXT_TIMEZONE,
|
AC_DEFUN([AC_EXT_TIMEZONE],
|
||||||
[
|
[
|
||||||
#
|
#
|
||||||
# Its important to include time.h in this check, as some systems (like convex)
|
# Its important to include time.h in this check, as some systems (like convex)
|
||||||
@@ -395,7 +395,7 @@ fi
|
|||||||
|
|
||||||
## AC_BZ_SET_COMPILER: Addition by Theodore Papadopoulo
|
## AC_BZ_SET_COMPILER: Addition by Theodore Papadopoulo
|
||||||
## Patch by Jim McKelvey: change sed -e 's/ /@/g' to sed -e 's/ /@/'
|
## Patch by Jim McKelvey: change sed -e 's/ /@/g' to sed -e 's/ /@/'
|
||||||
AC_DEFUN(AC_SG_SET_COMPILER,
|
AC_DEFUN([AC_SG_SET_COMPILER],
|
||||||
[cxxwith=`echo $1 | sed -e 's/ /@/'`
|
[cxxwith=`echo $1 | sed -e 's/ /@/'`
|
||||||
case "$cxxwith" in
|
case "$cxxwith" in
|
||||||
*:*@*) # Full initialization syntax
|
*:*@*) # Full initialization syntax
|
||||||
|
|||||||
+4
-5
@@ -4,14 +4,13 @@ exclude_dir = threads
|
|||||||
include_path = .
|
include_path = .
|
||||||
include_path = ..
|
include_path = ..
|
||||||
include_path = .\SimGear
|
include_path = .\SimGear
|
||||||
include_path = .\SimGear\metakit-2.4.3\include
|
include_path = ..\zlib-1.2.3
|
||||||
include_path = ..\SimGear\zlib-1.1.4
|
include_path = "..\OpenAL 1.0 Software Development Kit\include"
|
||||||
|
|
||||||
|
define = _USE_MATH_DEFINES
|
||||||
|
define = _CRT_SECURE_NO_DEPRECATE
|
||||||
define = HAVE_CONFIG_H
|
define = HAVE_CONFIG_H
|
||||||
|
|
||||||
add_project = .\SimGear\metakit-2.4.3\win\msvc60\mklib.dsp,mklib
|
|
||||||
add_project = .\SimGear\zlib.dsp,zlib
|
|
||||||
|
|
||||||
# Rule to create simgear_config.h
|
# Rule to create simgear_config.h
|
||||||
add_source_file = SOURCE=.\simgear\simgear_config.h.vc5\
|
add_source_file = SOURCE=.\simgear\simgear_config.h.vc5\
|
||||||
\
|
\
|
||||||
|
|||||||
+248
-179
@@ -1,16 +1,14 @@
|
|||||||
dnl Process this file with aclocal ; automake -a ; autoconf to produce a
|
dnl Process this file with autoget.sh to produce a working configure
|
||||||
dnl working configure script.
|
dnl script.
|
||||||
dnl
|
|
||||||
dnl $Id$
|
|
||||||
|
|
||||||
AC_INIT
|
AC_INIT
|
||||||
AC_CONFIG_SRCDIR([simgear/bucket/newbucket.cxx])
|
AC_CONFIG_SRCDIR([simgear/bucket/newbucket.cxx])
|
||||||
|
|
||||||
# Require at least automake 2.52
|
dnl Require at least automake 2.52
|
||||||
AC_PREREQ(2.52)
|
AC_PREREQ(2.52)
|
||||||
|
|
||||||
dnl Initialize the automake stuff
|
dnl Initialize the automake stuff
|
||||||
AM_INIT_AUTOMAKE(SimGear, 0.3.0)
|
AM_INIT_AUTOMAKE(SimGear, 0.3.10)
|
||||||
|
|
||||||
dnl Specify KAI C++ compiler and flags.
|
dnl Specify KAI C++ compiler and flags.
|
||||||
dnl Borrowed with slight modification from blitz distribution.
|
dnl Borrowed with slight modification from blitz distribution.
|
||||||
@@ -38,20 +36,45 @@ AC_PROG_RANLIB
|
|||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
|
|
||||||
|
dnl set the $host variable based on local machine/os
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
# Used on the Irix platform
|
dnl Used on the Irix platform
|
||||||
AR="ar"
|
case "${host}" in
|
||||||
ARFLAGS="cru"
|
*-*-irix*)
|
||||||
OS=`uname -s`
|
if test "x$CXX" = "xCC" -o "x$CXX" = "xccache CC"; then
|
||||||
if test "$OS" = "IRIX" -o "$OS" = "IRIX64"; then
|
AR="$CXX -ar"
|
||||||
if test "$CXX" = "CC"; then
|
|
||||||
AR="CC -ar"
|
|
||||||
ARFLAGS="-o"
|
ARFLAGS="-o"
|
||||||
|
CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro740"
|
||||||
|
compatibility_DIR="compatibility"
|
||||||
|
MIPSpro_DIRS="MIPSpro740"
|
||||||
|
AC_MSG_CHECKING([for MIPSpro compiler version 7.4 or newer])
|
||||||
|
AC_TRY_RUN([
|
||||||
|
int main() {
|
||||||
|
if ( _COMPILER_VERSION < 740 ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
], AC_MSG_RESULT(yes),
|
||||||
|
[ AC_MSG_RESULT(no)
|
||||||
|
CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro721"
|
||||||
|
MIPSpro_DIRS="$(MIPSpro_DIRS) MIPSpro721"
|
||||||
|
AC_MSG_WARN([Using our own subset of the STL headers])
|
||||||
|
], AC_MSG_RESULT(yes))
|
||||||
|
AC_SUBST(MIPSpro_DIRS)
|
||||||
fi
|
fi
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
AR="ar"
|
||||||
|
ARFLAGS="cru"
|
||||||
|
compatibility_DIR=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
AC_SUBST(AR)
|
AC_SUBST(AR)
|
||||||
AC_SUBST(ARFLAGS)
|
AC_SUBST(ARFLAGS)
|
||||||
|
AC_SUBST(compatibility_DIR)
|
||||||
|
|
||||||
if echo $includedir | egrep "simgear$" > /dev/null; then
|
if echo $includedir | egrep "simgear$" > /dev/null; then
|
||||||
echo "includedir is" $includedir "libdir is" $libdir
|
echo "includedir is" $includedir "libdir is" $libdir
|
||||||
@@ -60,8 +83,7 @@ else
|
|||||||
echo "includedir changed to" $includedir "libdir is" $libdir
|
echo "includedir changed to" $includedir "libdir is" $libdir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# set logging default value
|
dnl set logging; default value of with_logging=yes
|
||||||
# with_logging=yes
|
|
||||||
AC_ARG_WITH(logging, [ --with-logging Include logging output (default)])
|
AC_ARG_WITH(logging, [ --with-logging Include logging output (default)])
|
||||||
if test "x$with_logging" = "xno" ; then
|
if test "x$with_logging" = "xno" ; then
|
||||||
AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
|
AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
|
||||||
@@ -89,39 +111,42 @@ else
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
|
AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
|
||||||
|
|
||||||
|
# specify the plib location
|
||||||
|
AC_ARG_WITH(plib, [ --with-plib=PREFIX Specify the prefix path to plib])
|
||||||
|
|
||||||
dnl Check for MS Windows environment
|
if test "x$with_plib" != "x" ; then
|
||||||
AC_CHECK_HEADER(windows.h)
|
echo "plib prefix is $with_plib"
|
||||||
|
EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
|
||||||
AC_EGREP_CPP(yes,
|
|
||||||
[#ifdef __MINGW32__
|
|
||||||
yes
|
|
||||||
#endif
|
|
||||||
],is_mingw=yes, is_mingw=no)
|
|
||||||
|
|
||||||
echo "IS_MINGW = $is_mingw"
|
|
||||||
AM_CONDITIONAL(IS_MINGW, test "x$is_mingw" = "xyes")
|
|
||||||
|
|
||||||
AC_EGREP_CPP(yes,
|
|
||||||
[#ifdef __CYGWIN__
|
|
||||||
yes
|
|
||||||
#endif
|
|
||||||
],is_cygwin=yes, is_cygwin=no)
|
|
||||||
|
|
||||||
echo "IS_CYGWIN = $is_cygwin"
|
|
||||||
AM_CONDITIONAL(IS_CYGWIN, test "x$is_cygwin" = "xyes")
|
|
||||||
|
|
||||||
if test "x$HOSTTYPE" != "xmacintosh" -a "x$is_mingw" != "xyes"; then
|
|
||||||
dnl extra library and include directories
|
|
||||||
EXTRA_DIRS="/usr/X11R6"
|
|
||||||
|
|
||||||
if test -d /opt/X11R6 ; then
|
|
||||||
EXTRA_DIRS="$EXTRA_DIRS /opt/X11R6"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# specify the osg location
|
||||||
|
AC_ARG_WITH(osg, [ --with-osg=PREFIX Specify the prefix path to osg])
|
||||||
|
|
||||||
|
if test "x$with_osg" != "x" ; then
|
||||||
|
echo "osg prefix is $with_osg"
|
||||||
|
EXTRA_DIRS="${EXTRA_DIRS} $with_osg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Determine an extra directories to add to include/lib search paths
|
||||||
|
case "${host}" in
|
||||||
|
*-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
|
||||||
|
echo no EXTRA_DIRS for $host
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if test -d /usr/X11R6 ; then
|
||||||
|
EXTRA_DIR1="/usr/X11R6"
|
||||||
|
fi
|
||||||
|
if test -d /opt/X11R6 ; then
|
||||||
|
EXTRA_DIR2="/opt/X11R6"
|
||||||
|
fi
|
||||||
|
EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
|
wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
|
||||||
|
|
||||||
|
|
||||||
dnl Using AM_CONDITIONAL is a step out of the protected little
|
dnl Using AM_CONDITIONAL is a step out of the protected little
|
||||||
dnl automake fold so it is potentially dangerous. But, we are
|
dnl automake fold so it is potentially dangerous. But, we are
|
||||||
dnl beginning to run into cases where the standard checks are not
|
dnl beginning to run into cases where the standard checks are not
|
||||||
@@ -129,67 +154,98 @@ dnl enough. AM_CONDITIONALS are then referenced to conditionally
|
|||||||
dnl build a Makefile.in from a Makefile.am which lets us define custom
|
dnl build a Makefile.in from a Makefile.am which lets us define custom
|
||||||
dnl includes, compile alternative source files, etc.
|
dnl includes, compile alternative source files, etc.
|
||||||
|
|
||||||
dnl X11 might be installed on Mac OS X, don't want to use it if it is.
|
dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
|
||||||
if test "x$HOSTTYPE" != "xmacintosh" ; then
|
dnl to use it if it is.
|
||||||
dnl Check for X11 (fancy)
|
case "${host}" in
|
||||||
|
*-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
|
||||||
|
echo no fancy X11 check
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
fi
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
dnl Checks for libraries.
|
dnl Checks for libraries.
|
||||||
|
|
||||||
null_LIBS="$LIBS"
|
dnl Thread related checks
|
||||||
|
AC_CHECK_HEADER(pthread.h)
|
||||||
|
AC_SEARCH_LIBS(pthread_exit, [pthread c_r])
|
||||||
|
if test "x$ac_cv_header_pthread_h" = "xyes"; then
|
||||||
|
CXXFLAGS="$CXXFLAGS -D_REENTRANT"
|
||||||
|
CFLAGS="$CFLAGS -D_REENTRANT"
|
||||||
|
|
||||||
AC_CHECK_LIB(m, cos)
|
if test "x$ac_cv_search_pthread_exit" = "x-lc_r"; then
|
||||||
|
CXXFLAGS="-pthread $CXXFLAGS"
|
||||||
|
CFLAGS="-pthread $CFLAGS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_header_pthread_h" = "xyes")
|
||||||
|
|
||||||
|
thread_LIBS="$LIBS"
|
||||||
|
LIBS=""
|
||||||
|
|
||||||
|
dnl search for network related libraries
|
||||||
|
AC_SEARCH_LIBS(inet_addr, xnet)
|
||||||
|
AC_SEARCH_LIBS(socket, socket)
|
||||||
|
|
||||||
|
network_LIBS="$LIBS"
|
||||||
|
LIBS=""
|
||||||
|
|
||||||
|
dnl check for some default libraries
|
||||||
|
AC_SEARCH_LIBS(cos, m)
|
||||||
|
|
||||||
base_LIBS="$LIBS"
|
base_LIBS="$LIBS"
|
||||||
|
|
||||||
dnl Thread related checks
|
|
||||||
AC_CHECK_LIB(pthread, pthread_exit)
|
|
||||||
AC_CHECK_HEADER(pthread.h)
|
|
||||||
if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
|
|
||||||
CXXFLAGS="$CXXFLAGS -D_REENTRANT"
|
|
||||||
CFLAGS="$CFLAGS -D_REENTRANT"
|
|
||||||
fi
|
|
||||||
AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes")
|
|
||||||
|
|
||||||
AC_CHECK_LIB(socket, socket)
|
|
||||||
|
|
||||||
dnl X11 might be installed, but we don't want to use it for OSX -dw-
|
|
||||||
if test "x$HOSTTYPE" != "xmacintosh" ; then
|
|
||||||
AC_CHECK_LIB(X11, XCreateWindow)
|
|
||||||
AC_CHECK_LIB(Xext, XShmCreateImage)
|
|
||||||
AC_CHECK_LIB(Xi, XGetExtensionVersion)
|
|
||||||
AC_CHECK_LIB(ICE, IceOpenConnection)
|
|
||||||
AC_CHECK_LIB(SM, SmcOpenConnection)
|
|
||||||
AC_CHECK_LIB(Xt, XtMalloc)
|
|
||||||
AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl check for OpenGL related libraries
|
dnl check for OpenGL related libraries
|
||||||
|
case "${host}" in
|
||||||
|
*-*-cygwin* | *-*-mingw32*)
|
||||||
|
dnl CygWin under Windoze.
|
||||||
|
|
||||||
AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
|
echo Win32 specific hacks...
|
||||||
|
AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
|
||||||
|
AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
|
||||||
|
|
||||||
if test "x$HOSTTYPE" = "xmacintosh" ; then
|
LIBS="$LIBS -lglu32 -lopengl32"
|
||||||
dnl Macintosh OSX
|
LIBS="$LIBS -luser32 -lgdi32 -lwinmm"
|
||||||
LIBS="$LIBS -framework OpenGL -framework GLUT"
|
|
||||||
elif test "x$ac_cv_header_windows_h" != "xyes" ; then
|
|
||||||
dnl Reasonable stuff for X-Windows based machines
|
|
||||||
|
|
||||||
AC_CHECK_LIB(GLcore, glNewList)
|
dnl add -lwsock32 for mingwin
|
||||||
if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
|
case "${host}" in
|
||||||
dnl if no GLcore, check for GL
|
*-*-mingw32*)
|
||||||
AC_CHECK_LIB(GL, glNewList)
|
base_LIBS="$base_LIBS -lws2_32"
|
||||||
if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
|
;;
|
||||||
dnl if no GL, check for MesaGL
|
esac
|
||||||
AC_CHECK_LIB(MesaGL, glNewList)
|
|
||||||
fi
|
echo "Will link apps with $LIBS"
|
||||||
else
|
;;
|
||||||
|
|
||||||
|
*-apple-darwin*)
|
||||||
|
dnl Mac OS X
|
||||||
|
|
||||||
|
LIBS="$LIBS -framework OpenGL -framework Carbon -lobjc"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
dnl X-Windows based machines
|
||||||
|
|
||||||
|
AC_SEARCH_LIBS(XCreateWindow, X11)
|
||||||
|
AC_SEARCH_LIBS(XShmCreateImage, Xext)
|
||||||
|
AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
|
||||||
|
AC_SEARCH_LIBS(IceOpenConnection, ICE)
|
||||||
|
AC_SEARCH_LIBS(SmcOpenConnection, SM)
|
||||||
|
AC_SEARCH_LIBS(XtMalloc, Xt)
|
||||||
|
AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
|
||||||
|
|
||||||
|
AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
|
||||||
|
if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
|
||||||
dnl if GLcore found, then also check for GL
|
dnl if GLcore found, then also check for GL
|
||||||
AC_CHECK_LIB(GL, glXCreateContext)
|
AC_SEARCH_LIBS(glXCreateContext, GL)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl if using mesa, check for xmesa.h
|
dnl if using mesa, check for xmesa.h
|
||||||
if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
|
if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
|
||||||
AC_CHECK_HEADER(GL/fxmesa.h)
|
AC_CHECK_HEADER(GL/fxmesa.h)
|
||||||
if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
|
if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
|
||||||
AC_DEFINE([XMESA], 1, [Define for fxmesa])
|
AC_DEFINE([XMESA], 1, [Define for fxmesa])
|
||||||
@@ -197,76 +253,76 @@ elif test "x$ac_cv_header_windows_h" != "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CHECK_LIB(GLU, gluLookAt)
|
AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
|
||||||
if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
|
;;
|
||||||
dnl if no GLU, check for MesaGLU
|
|
||||||
AC_CHECK_LIB(MesaGLU, gluLookAt)
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl check for glut
|
esac
|
||||||
AC_CHECK_LIB(glut, glutGetModifiers)
|
|
||||||
|
|
||||||
dnl test for glutGameModeString, but avoid adding glut a second time into
|
AC_SEARCH_LIBS(glutGetModifiers, [ glut glut32 freeglut ], have_glut=yes, have_glut=no)
|
||||||
dnl the list of libraries
|
AM_CONDITIONAL(HAVE_GLUT, test "x$have_glut" = "xyes")
|
||||||
save_LIBS="$LIBS"
|
|
||||||
AC_CHECK_LIB(glut, glutGameModeString)
|
|
||||||
LIBS="$save_LIBS"
|
|
||||||
else
|
|
||||||
dnl Win32 libs
|
|
||||||
|
|
||||||
echo Win32 specific hacks...
|
|
||||||
AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
|
|
||||||
AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
|
|
||||||
|
|
||||||
dnl just define these to true and hope for the best
|
|
||||||
ac_cv_lib_glut_glutGetModifiers="yes"
|
|
||||||
ac_cv_lib_glut_glutGameModeString="yes"
|
|
||||||
|
|
||||||
if test "x$with_sgi_opengl" = "xyes" ; then
|
|
||||||
echo "Building with glut.dll, glu.dll, and opengl.dll"
|
|
||||||
WIN32_GLUT=glut
|
|
||||||
WIN32_GLU=glu
|
|
||||||
WIN32_OPENGL=opengl
|
|
||||||
else
|
|
||||||
echo "Building with glut32.dll, glu32.dll, and opengl32.dll"
|
|
||||||
WIN32_GLUT=glut32
|
|
||||||
WIN32_GLU=glu32
|
|
||||||
WIN32_OPENGL=opengl32
|
|
||||||
fi
|
|
||||||
|
|
||||||
LIBS="$LIBS -l${WIN32_GLUT} -l${WIN32_GLU} -l${WIN32_OPENGL}"
|
|
||||||
LIBS="$LIBS -luser32 -lgdi32"
|
|
||||||
if test "x$is_mingw" = "xyes" ; then
|
|
||||||
EXTRA_DIRS="${EXTRA_DIRS}"
|
|
||||||
fi
|
|
||||||
echo "Will link apps with $LIBS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno"; then
|
|
||||||
echo
|
|
||||||
echo "Unable to find the necessary OpenGL or GLUT libraries."
|
|
||||||
echo "See config.log for automated test details and results ..."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$ac_cv_lib_glut_glutGameModeString" = "xno"; then
|
|
||||||
echo
|
|
||||||
echo "Your version of glut doesn't support game mode."
|
|
||||||
echo "You need to install the latest version of glut. If your"
|
|
||||||
echo "distribution doesn't provide a newer version, you can get the source"
|
|
||||||
echo "code from:"
|
|
||||||
echo
|
|
||||||
echo " http://reality.sgi.com/opengl/glut3/glut3.html"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
opengl_LIBS="$LIBS"
|
opengl_LIBS="$LIBS"
|
||||||
LIBS="$base_LIBS"
|
LIBS="$base_LIBS"
|
||||||
|
|
||||||
AC_SUBST(base_LIBS)
|
dnl check for OpenAL libraries
|
||||||
AC_SUBST(opengl_LIBS)
|
OPENAL_OK="no"
|
||||||
|
case "${host}" in
|
||||||
|
*-*-cygwin* | *-*-mingw32*)
|
||||||
|
dnl CygWin under Windoze.
|
||||||
|
INCLUDES="$INCLUDES -I/usr/local/include/"
|
||||||
|
LIBS="$LIBS -L/usr/local/lib"
|
||||||
|
AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal ] )
|
||||||
|
AC_SEARCH_LIBS(alutInit, [ openal32 ALut alut ] )
|
||||||
|
LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
|
||||||
|
openal_LIBS="$LIBS"
|
||||||
|
OPENAL_OK="$ac_cv_search_alGenBuffers"
|
||||||
|
;;
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_XWINDOWS, test "x$ac_cv_lib_X11_XCreateWindow" = "xyes" )
|
*-apple-darwin*)
|
||||||
|
dnl Mac OS X
|
||||||
|
|
||||||
|
LIBS="$LIBS -framework IOKit -framework OpenAL"
|
||||||
|
openal_LIBS="$LIBS"
|
||||||
|
# not sure how to test if OpenAL exists on MacOS (does it come by default?)
|
||||||
|
OPENAL_OK="yes"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
dnl default unix style machines
|
||||||
|
|
||||||
|
save_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $thread_LIBS"
|
||||||
|
AC_SEARCH_LIBS(alGenBuffers, openal)
|
||||||
|
AC_SEARCH_LIBS(alutInit, [ alut openal ] )
|
||||||
|
OPENAL_OK="$ac_cv_search_alGenBuffers"
|
||||||
|
openal_LIBS="$LIBS"
|
||||||
|
LIBS=$save_LIBS
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test "$OPENAL_OK" == "no"; then
|
||||||
|
echo
|
||||||
|
echo "You *must* have the openal library installed on your system to build"
|
||||||
|
echo "SimGear!"
|
||||||
|
echo
|
||||||
|
echo "Please see README.OpenAL for more details."
|
||||||
|
echo
|
||||||
|
echo "configure aborted."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIBS="$base_LIBS"
|
||||||
|
|
||||||
|
AC_SUBST(base_LIBS)
|
||||||
|
AC_SUBST(openal_LIBS)
|
||||||
|
AC_SUBST(opengl_LIBS)
|
||||||
|
AC_SUBST(thread_LIBS)
|
||||||
|
AC_SUBST(network_LIBS)
|
||||||
|
|
||||||
|
dnl Check for MS Windows environment
|
||||||
|
AC_CHECK_HEADER(windows.h)
|
||||||
|
AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
|
||||||
|
|
||||||
# The following are C++ items that need to be tested for with the c++
|
# The following are C++ items that need to be tested for with the c++
|
||||||
# compiler
|
# compiler
|
||||||
@@ -286,11 +342,11 @@ if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([for plib 1.6.0 or newer])
|
AC_MSG_CHECKING([for plib 1.8.4 or newer])
|
||||||
AC_TRY_RUN([
|
AC_TRY_RUN([
|
||||||
#include <plib/ul.h>
|
#include <plib/ul.h>
|
||||||
|
|
||||||
#define MIN_PLIB_VERSION 160
|
#define MIN_PLIB_VERSION 184
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int major, minor, micro;
|
int major, minor, micro;
|
||||||
@@ -305,37 +361,35 @@ int main() {
|
|||||||
],
|
],
|
||||||
AC_MSG_RESULT(yes),
|
AC_MSG_RESULT(yes),
|
||||||
[AC_MSG_RESULT(wrong version);
|
[AC_MSG_RESULT(wrong version);
|
||||||
AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
|
AC_MSG_ERROR([Install plib 1.8.4 or later first...])],
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
)
|
)
|
||||||
|
|
||||||
dnl Check for system installed metakit
|
LIBS="$saved_LIBS"
|
||||||
AC_CHECK_HEADER(mk4.h)
|
|
||||||
if test "x$ac_cv_header_mk4_h" != "xyes"; then
|
|
||||||
echo
|
|
||||||
echo "Metakit not found, you will need to install this first."
|
|
||||||
echo "Please read the README.metakit for more information."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_LANG_POP
|
AC_LANG_POP
|
||||||
|
|
||||||
dnl Specify if we want logging (testing build) or not (release build)
|
|
||||||
|
|
||||||
dnl Check for system installed zlib
|
dnl Check for system installed zlib
|
||||||
AC_CHECK_HEADER(zlib.h)
|
AC_CHECK_HEADER(zlib.h)
|
||||||
if test "x$ac_cv_header_zlib_h" != "xyes"; then
|
if test "x$ac_cv_header_zlib_h" != "xyes"; then
|
||||||
echo
|
echo
|
||||||
echo "zlib not found, you will need to install this first."
|
echo "zlib library not found."
|
||||||
echo "Please read the README.zlib for more information."
|
echo
|
||||||
exit
|
echo "If your OS does not provide an installable package for zlib"
|
||||||
|
echo "you will have to compile and install it first yourself. A copy"
|
||||||
|
echo "of zlib-1.1.4.tar.gz is included with SimGear. You will"
|
||||||
|
echo "have to untar this source code, and follow its included instructions"
|
||||||
|
echo "to compile and install on your system."
|
||||||
|
echo
|
||||||
|
echo "configure aborted."
|
||||||
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Checks for header files.
|
dnl Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS( \
|
AC_CHECK_HEADERS( \
|
||||||
fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
|
fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
|
||||||
sys/stat.h sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
|
sys/stat.h sys/time.h sys/timeb.h unistd.h values.h )
|
||||||
|
|
||||||
if test "x$ac_cv_header_stdint_h" = "xyes"; then
|
if test "x$ac_cv_header_stdint_h" = "xyes"; then
|
||||||
AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
|
AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
|
||||||
@@ -344,39 +398,53 @@ fi
|
|||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
AC_TYPE_SIZE_T
|
AC_TYPE_SIZE_T
|
||||||
|
AC_TYPE_MODE_T
|
||||||
AC_HEADER_TIME
|
AC_HEADER_TIME
|
||||||
AC_STRUCT_TM
|
AC_STRUCT_TM
|
||||||
|
|
||||||
dnl Checks for library functions.
|
dnl Checks for library functions.
|
||||||
|
old_LIBS=$LIBS
|
||||||
|
LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
|
||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_CHECK_FUNCS( ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
|
AC_CHECK_FUNCS( [ \
|
||||||
random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
|
ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
|
||||||
|
random drand48 setitimer getitimer signal GetLocalTime rint getrusage ] )
|
||||||
|
LIBS=$old_LIBS
|
||||||
|
|
||||||
AM_CONFIG_HEADER(simgear/simgear_config.h)
|
AM_CONFIG_HEADER(simgear/simgear_config.h)
|
||||||
|
|
||||||
AC_CONFIG_FILES([ \
|
AC_CONFIG_FILES([ \
|
||||||
Makefile \
|
Makefile \
|
||||||
SimGear.spec \
|
SimGear.spec \
|
||||||
src-libs/Makefile \
|
|
||||||
simgear/Makefile \
|
simgear/Makefile \
|
||||||
simgear/version.h \
|
simgear/version.h \
|
||||||
|
simgear/compatibility/Makefile \
|
||||||
|
simgear/compatibility/MIPSpro721/Makefile \
|
||||||
|
simgear/compatibility/MIPSpro740/Makefile \
|
||||||
simgear/bucket/Makefile \
|
simgear/bucket/Makefile \
|
||||||
simgear/debug/Makefile \
|
simgear/debug/Makefile \
|
||||||
simgear/ephemeris/Makefile \
|
simgear/ephemeris/Makefile \
|
||||||
simgear/io/Makefile \
|
simgear/io/Makefile \
|
||||||
simgear/magvar/Makefile \
|
simgear/magvar/Makefile \
|
||||||
simgear/math/Makefile \
|
simgear/math/Makefile \
|
||||||
simgear/metar/Makefile \
|
simgear/environment/Makefile \
|
||||||
simgear/misc/Makefile \
|
simgear/misc/Makefile \
|
||||||
|
simgear/nasal/Makefile \
|
||||||
|
simgear/props/Makefile \
|
||||||
simgear/route/Makefile \
|
simgear/route/Makefile \
|
||||||
|
simgear/scene/Makefile \
|
||||||
|
simgear/scene/material/Makefile \
|
||||||
|
simgear/scene/model/Makefile \
|
||||||
|
simgear/scene/sky/Makefile \
|
||||||
|
simgear/scene/tgdb/Makefile \
|
||||||
|
simgear/scene/util/Makefile \
|
||||||
simgear/screen/Makefile \
|
simgear/screen/Makefile \
|
||||||
simgear/serial/Makefile \
|
simgear/serial/Makefile \
|
||||||
simgear/sky/Makefile \
|
simgear/sound/Makefile \
|
||||||
simgear/sky/clouds3d/Makefile \
|
simgear/structure/Makefile \
|
||||||
simgear/threads/Makefile \
|
simgear/threads/Makefile \
|
||||||
simgear/timing/Makefile \
|
simgear/timing/Makefile \
|
||||||
simgear/xgl/Makefile \
|
|
||||||
simgear/xml/Makefile \
|
simgear/xml/Makefile \
|
||||||
])
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
@@ -394,7 +462,7 @@ else
|
|||||||
echo "Debug messages: yes"
|
echo "Debug messages: yes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -n "Automake version: ($AUTO_MAKE_VERSION) "
|
echo -n "Automake version: "
|
||||||
automake --version | head -1
|
automake --version | head -1
|
||||||
|
|
||||||
if test "x$with_jpeg_factory" = "xyes"; then
|
if test "x$with_jpeg_factory" = "xyes"; then
|
||||||
@@ -403,8 +471,9 @@ else
|
|||||||
echo "Without JPEG Factory support"
|
echo "Without JPEG Factory support"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
|
if test "x$ac_cv_header_pthread_h" = "xyes"; then
|
||||||
echo "Threads: pthread lib found."
|
echo "Threads: pthread lib found."
|
||||||
else
|
else
|
||||||
echo "Threads: no threads (pthread lib not found.)"
|
echo "Threads: no threads (pthread lib not found.)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
Debug
|
||||||
|
Release
|
||||||
|
SimGear.ncb
|
||||||
|
SimGear.suo
|
||||||
Executable
+21
@@ -0,0 +1,21 @@
|
|||||||
|
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimGear", "SimGear.vcproj", "{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfiguration) = preSolution
|
||||||
|
Debug = Debug
|
||||||
|
Release = Release
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfiguration) = postSolution
|
||||||
|
{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug.ActiveCfg = Debug|Win32
|
||||||
|
{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug.Build.0 = Debug|Win32
|
||||||
|
{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release.ActiveCfg = Release|Win32
|
||||||
|
{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Executable
+1079
File diff suppressed because it is too large
Load Diff
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||||
|
# Visual C++ Express 2005
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimGear", "SimGear.vcproj", "{952B5B5B-7FC8-4AE9-A664-333322BEEEB0}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{952B5B5B-7FC8-4AE9-A664-333322BEEEB0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{952B5B5B-7FC8-4AE9-A664-333322BEEEB0}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{952B5B5B-7FC8-4AE9-A664-333322BEEEB0}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{952B5B5B-7FC8-4AE9-A664-333322BEEEB0}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Executable
+1348
File diff suppressed because it is too large
Load Diff
+11
-7
@@ -5,29 +5,33 @@ SGTHREAD_DIR =
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# METAR_DIRS =
|
# METAR_DIRS =
|
||||||
METAR_DIRS = metar
|
METAR_DIRS = environment
|
||||||
|
|
||||||
EXTRA_DIST = simgear_config.h.vc5 version.h.in
|
EXTRA_DIST = simgear_config.h.vc5 simgear_config.h-msvc71 version.h.in
|
||||||
|
|
||||||
include_HEADERS = \
|
include_HEADERS = \
|
||||||
compiler.h constants.h sg_inlines.h sg_traits.hxx sg_zlib.h version.h
|
compiler.h constants.h sg_inlines.h sg_traits.hxx version.h
|
||||||
|
|
||||||
SUBDIRS = \
|
SUBDIRS = \
|
||||||
|
$(compatibility_DIR) \
|
||||||
xml \
|
xml \
|
||||||
debug \
|
debug \
|
||||||
misc \
|
misc \
|
||||||
|
structure \
|
||||||
bucket \
|
bucket \
|
||||||
ephemeris \
|
ephemeris \
|
||||||
io \
|
io \
|
||||||
magvar \
|
magvar \
|
||||||
math \
|
math \
|
||||||
$(METAR_DIRS) \
|
$(METAR_DIRS) \
|
||||||
|
nasal \
|
||||||
|
props \
|
||||||
route \
|
route \
|
||||||
|
scene \
|
||||||
screen \
|
screen \
|
||||||
serial \
|
serial \
|
||||||
sky \
|
sound \
|
||||||
$(SGTHREAD_DIR) \
|
$(SGTHREAD_DIR) \
|
||||||
timing \
|
timing
|
||||||
xgl
|
|
||||||
|
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS) compatibility
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Written by Curtis L. Olson, started February 1999.
|
* Written by Curtis L. Olson, started February 1999.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
|
* Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt/
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -45,6 +44,9 @@ SGBucket::SGBucket(const double dlon, const double dlat) {
|
|||||||
set_bucket(dlon, dlat);
|
set_bucket(dlon, dlat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SGBucket::SGBucket(const SGGeod& geod) {
|
||||||
|
set_bucket(geod);
|
||||||
|
}
|
||||||
|
|
||||||
// create an impossible bucket if false
|
// create an impossible bucket if false
|
||||||
SGBucket::SGBucket(const bool is_good) {
|
SGBucket::SGBucket(const bool is_good) {
|
||||||
@@ -74,11 +76,6 @@ SGBucket::SGBucket(const long int bindex) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// default destructor
|
|
||||||
SGBucket::~SGBucket() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Set the bucket params for the specified lat and lon
|
// Set the bucket params for the specified lat and lon
|
||||||
void SGBucket::set_bucket( double *lonlat ) {
|
void SGBucket::set_bucket( double *lonlat ) {
|
||||||
set_bucket( lonlat[0], lonlat[1] );
|
set_bucket( lonlat[0], lonlat[1] );
|
||||||
@@ -136,6 +133,11 @@ void SGBucket::set_bucket( double dlon, double dlat ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SGBucket::set_bucket(const SGGeod& geod)
|
||||||
|
{
|
||||||
|
set_bucket(geod.getLongitudeDeg(), geod.getLatitudeDeg());
|
||||||
|
}
|
||||||
|
|
||||||
// Build the path name for this bucket
|
// Build the path name for this bucket
|
||||||
string SGBucket::gen_base_path() const {
|
string SGBucket::gen_base_path() const {
|
||||||
// long int index;
|
// long int index;
|
||||||
@@ -208,7 +210,7 @@ double SGBucket::get_width_m() const {
|
|||||||
double clat_rad = clat * SGD_DEGREES_TO_RADIANS;
|
double clat_rad = clat * SGD_DEGREES_TO_RADIANS;
|
||||||
double cos_lat = cos( clat_rad );
|
double cos_lat = cos( clat_rad );
|
||||||
double local_radius = cos_lat * SG_EQUATORIAL_RADIUS_M;
|
double local_radius = cos_lat * SG_EQUATORIAL_RADIUS_M;
|
||||||
double local_perimeter = 2.0 * local_radius * SGD_PI;
|
double local_perimeter = local_radius * SGD_2PI;
|
||||||
double degree_width = local_perimeter / 360.0;
|
double degree_width = local_perimeter / 360.0;
|
||||||
|
|
||||||
return sg_bucket_span( get_center_lat() ) * degree_width;
|
return sg_bucket_span( get_center_lat() ) * degree_width;
|
||||||
@@ -217,7 +219,7 @@ double SGBucket::get_width_m() const {
|
|||||||
|
|
||||||
// return height of the tile in meters
|
// return height of the tile in meters
|
||||||
double SGBucket::get_height_m() const {
|
double SGBucket::get_height_m() const {
|
||||||
double perimeter = 2.0 * SG_EQUATORIAL_RADIUS_M * SGD_PI;
|
double perimeter = SG_EQUATORIAL_RADIUS_M * SGD_2PI;
|
||||||
double degree_height = perimeter / 360.0;
|
double degree_height = perimeter / 360.0;
|
||||||
|
|
||||||
return SG_BUCKET_SPAN * degree_height;
|
return SG_BUCKET_SPAN * degree_height;
|
||||||
@@ -271,16 +273,32 @@ void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy ) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// longitude difference
|
// longitude difference
|
||||||
double c1_lon = b1.get_center_lon();
|
double diff_lon=0.0;
|
||||||
double c2_lon = b2.get_center_lon();
|
double span=0.0;
|
||||||
double diff_lon = c2_lon - c1_lon;
|
|
||||||
double span;
|
SGBucket tmp_bucket;
|
||||||
if ( sg_bucket_span(c1_lat) <= sg_bucket_span(c2_lat) ) {
|
// To handle crossing the bucket size boundary
|
||||||
|
// we need to account for different size buckets.
|
||||||
|
|
||||||
|
if ( sg_bucket_span(c1_lat) <= sg_bucket_span(c2_lat) )
|
||||||
|
{
|
||||||
span = sg_bucket_span(c1_lat);
|
span = sg_bucket_span(c1_lat);
|
||||||
} else {
|
} else {
|
||||||
span = sg_bucket_span(c2_lat);
|
span = sg_bucket_span(c2_lat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diff_lon = b2.get_center_lon() - b1.get_center_lon();
|
||||||
|
|
||||||
|
if (diff_lon <0.0)
|
||||||
|
{
|
||||||
|
diff_lon -= b1.get_width()*0.5 + b2.get_width()*0.5 - span;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
diff_lon += b1.get_width()*0.5 + b2.get_width()*0.5 - span;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_RINT
|
#ifdef HAVE_RINT
|
||||||
*dx = (int)rint( diff_lon / span );
|
*dx = (int)rint( diff_lon / span );
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Written by Curtis L. Olson, started February 1999.
|
* Written by Curtis L. Olson, started February 1999.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
|
* Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -32,6 +31,7 @@
|
|||||||
|
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
#include <simgear/constants.h>
|
#include <simgear/constants.h>
|
||||||
|
#include <simgear/math/SGMath.hxx>
|
||||||
|
|
||||||
#ifdef SG_HAVE_STD_INCLUDES
|
#ifdef SG_HAVE_STD_INCLUDES
|
||||||
# include <cmath>
|
# include <cmath>
|
||||||
@@ -54,10 +54,7 @@ SG_USING_STD(fabs);
|
|||||||
#include STL_STRING
|
#include STL_STRING
|
||||||
|
|
||||||
SG_USING_STD(string);
|
SG_USING_STD(string);
|
||||||
|
|
||||||
#if ! defined( SG_HAVE_NATIVE_SGI_COMPILERS )
|
|
||||||
SG_USING_STD(ostream);
|
SG_USING_STD(ostream);
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -118,10 +115,10 @@ class SGBucket {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
double cx, cy; // centerpoint (lon, lat) in degrees of bucket
|
double cx, cy; // centerpoint (lon, lat) in degrees of bucket
|
||||||
int lon; // longitude index (-180 to 179)
|
short lon; // longitude index (-180 to 179)
|
||||||
int lat; // latitude index (-90 to 89)
|
short lat; // latitude index (-90 to 89)
|
||||||
int x; // x subdivision (0 to 7)
|
char x; // x subdivision (0 to 7)
|
||||||
int y; // y subdivision (0 to 7)
|
char y; // y subdivision (0 to 7)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -137,6 +134,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
SGBucket(const double dlon, const double dlat);
|
SGBucket(const double dlon, const double dlat);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a bucket given a specific location.
|
||||||
|
* @param dlon longitude specified in degrees
|
||||||
|
* @param dlat latitude specified in degrees
|
||||||
|
*/
|
||||||
|
SGBucket(const SGGeod& geod);
|
||||||
|
|
||||||
/** Construct a bucket.
|
/** Construct a bucket.
|
||||||
* @param is_good if false, create an invalid bucket. This is
|
* @param is_good if false, create an invalid bucket. This is
|
||||||
* useful * if you are comparing cur_bucket to last_bucket and
|
* useful * if you are comparing cur_bucket to last_bucket and
|
||||||
@@ -150,11 +154,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
SGBucket(const long int bindex);
|
SGBucket(const long int bindex);
|
||||||
|
|
||||||
/**
|
|
||||||
* Default destructor.
|
|
||||||
*/
|
|
||||||
~SGBucket();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset a bucket to represent a new lat and lon
|
* Reset a bucket to represent a new lat and lon
|
||||||
* @param dlon longitude specified in degrees
|
* @param dlon longitude specified in degrees
|
||||||
@@ -169,6 +168,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_bucket( double *lonlat );
|
void set_bucket( double *lonlat );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset a bucket to represent a new lat and lon
|
||||||
|
* @param dlon longitude specified in degrees
|
||||||
|
* @param dlat latitude specified in degrees
|
||||||
|
*/
|
||||||
|
void set_bucket(const SGGeod& geod);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an impossible bucket.
|
* Create an impossible bucket.
|
||||||
* This is useful if you are comparing cur_bucket to last_bucket
|
* This is useful if you are comparing cur_bucket to last_bucket
|
||||||
@@ -257,17 +263,36 @@ public:
|
|||||||
*/
|
*/
|
||||||
double get_height_m() const;
|
double get_height_m() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the center of the bucket in geodetic coordinates.
|
||||||
|
*/
|
||||||
|
SGGeod get_center() const
|
||||||
|
{ return SGGeod::fromDeg(get_center_lon(), get_center_lat()); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the center of the bucket in geodetic coordinates.
|
||||||
|
*/
|
||||||
|
SGGeod get_corner(unsigned num) const
|
||||||
|
{
|
||||||
|
double lonFac = ((num + 1) & 2) ? 0.5 : -0.5;
|
||||||
|
double latFac = ((num ) & 2) ? 0.5 : -0.5;
|
||||||
|
return SGGeod::fromDeg(get_center_lon() + lonFac*get_width(),
|
||||||
|
get_center_lat() + latFac*get_height());
|
||||||
|
}
|
||||||
|
|
||||||
// Informational methods.
|
// Informational methods.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the lon of the lower left corner of this tile.
|
* @return the lon of the lower left corner of
|
||||||
|
* the 1x1 chunk containing this tile.
|
||||||
*/
|
*/
|
||||||
inline int get_lon() const { return lon; }
|
inline int get_chunk_lon() const { return lon; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the lat of the lower left corner of this tile.
|
* @return the lat of the lower left corner of
|
||||||
|
* the 1x1 chunk containing this tile.
|
||||||
*/
|
*/
|
||||||
inline int get_lat() const { return lat; }
|
inline int get_chunk_lat() const { return lat; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the x coord within the 1x1 degree chunk this tile.
|
* @return the x coord within the 1x1 degree chunk this tile.
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
includedir = @includedir@/compatibility/
|
||||||
|
|
||||||
|
include_HEADERS = \
|
||||||
|
iostream \
|
||||||
|
strstream \
|
||||||
|
sstream \
|
||||||
|
istream \
|
||||||
|
fstream \
|
||||||
|
iterator \
|
||||||
|
iomanip \
|
||||||
|
new \
|
||||||
|
streambuf \
|
||||||
|
\
|
||||||
|
irix_string
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_FSTREAM
|
||||||
|
#define __SG_FSTREAM 1
|
||||||
|
|
||||||
|
# if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
# include <fstream.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::fstream;
|
||||||
|
using ::ofstream;
|
||||||
|
using ::ifstream;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // !__SG_FSTREAM
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_IOMANIP
|
||||||
|
#define __SG_IOMANIP 1
|
||||||
|
|
||||||
|
# include <iomanip.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
using ::setw;
|
||||||
|
using ::setprecision;
|
||||||
|
|
||||||
|
inline int setfill(int f) { ::setfill(f); }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // !__SG_IOMANIP
|
||||||
|
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_IOSTREAM
|
||||||
|
#define __SG_IOSTREAM 1
|
||||||
|
|
||||||
|
# if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
# include <fstream>
|
||||||
|
# include <iostream.h>
|
||||||
|
|
||||||
|
class ios_base : public ios {
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef int openmode;
|
||||||
|
typedef int seekdir;
|
||||||
|
|
||||||
|
enum { binary = 0 };
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::cin;
|
||||||
|
using ::cout;
|
||||||
|
using ::cerr;
|
||||||
|
using ::clog;
|
||||||
|
using ::endl;
|
||||||
|
|
||||||
|
using ::ios;
|
||||||
|
using ::ios_base;
|
||||||
|
using ::iostream;
|
||||||
|
using ::istream;
|
||||||
|
using ::ostream;
|
||||||
|
|
||||||
|
using ::dec;
|
||||||
|
using ::oct;
|
||||||
|
using ::hex;
|
||||||
|
|
||||||
|
enum { skipws=ios::skipws,
|
||||||
|
left=ios::left, right=ios::right, internal=ios::internal,
|
||||||
|
showbase=ios::showbase, showpoint=ios::showpoint,
|
||||||
|
uppercase=ios::uppercase, showpos=ios::showpos,
|
||||||
|
scientific=ios::scientific, fixed=ios::fixed,
|
||||||
|
unitbuf=ios::unitbuf, stdio=ios::stdio
|
||||||
|
#if _BOOL && __EDG_ABI_COMPATIBILITY_VERSION>227 /* bool support */
|
||||||
|
,boolalpha=ios::boolalpha
|
||||||
|
#endif /* bool support */
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // !__SG_IOSTREAM
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
#ifndef __SGI_HXX
|
||||||
|
#define __SGI_HXX 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
operator!=( const std::string& lhs, const char* rhs)
|
||||||
|
{
|
||||||
|
return lhs.compare( rhs ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
operator!=( const char* lhs, const std::string& rhs)
|
||||||
|
{
|
||||||
|
return rhs.compare( lhs ) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
operator==( const std::string& lhs, const char* rhs)
|
||||||
|
{
|
||||||
|
return lhs.compare( rhs ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool
|
||||||
|
operator==( const char* lhs, const std::string& rhs)
|
||||||
|
{
|
||||||
|
return rhs.compare( lhs ) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string
|
||||||
|
operator+(const std::string& lhs, const char* rhs)
|
||||||
|
{
|
||||||
|
return lhs + std::string(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string
|
||||||
|
operator+(const char* lhs, const std::string& rhs)
|
||||||
|
{
|
||||||
|
return std::string(lhs) + rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* !__SGI_HXX */
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_ISTREAM
|
||||||
|
#define __SG_ISTREAM 1
|
||||||
|
|
||||||
|
# include <iostream>
|
||||||
|
|
||||||
|
# if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
# include <stream.h>
|
||||||
|
# include <string>
|
||||||
|
|
||||||
|
using std::getline;
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // !__SG_ISTREAM
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_ITERATOR
|
||||||
|
#define __SG_ITERATOR 1
|
||||||
|
|
||||||
|
# include <iterator.h>
|
||||||
|
|
||||||
|
#endif // !__SG_ITERATOR
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_NEW
|
||||||
|
#define __SG_NEW 1
|
||||||
|
|
||||||
|
#if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
# include <new.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // !__SG_NEW
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_SSTREAM
|
||||||
|
#define __SG_SSTREAM 1
|
||||||
|
|
||||||
|
# include <iostream>
|
||||||
|
# include <strstream>
|
||||||
|
# include <string>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
class ostringstream : public ostrstream {
|
||||||
|
public:
|
||||||
|
std::string str() { return string(ostrstream::str()); }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef istrstream istringstream;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // !__SG_SSTREAM
|
||||||
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_STREAMBUF
|
||||||
|
#define __SG_STREAMBUF 1
|
||||||
|
|
||||||
|
# include <iostream>
|
||||||
|
# include <char_traits.h>
|
||||||
|
|
||||||
|
//
|
||||||
|
// Until we find a good way to rename the original streambuf class
|
||||||
|
// and derive our own streambuf class from that, define this variable
|
||||||
|
// for now so the code can inherit our streambuf class instead.
|
||||||
|
//
|
||||||
|
# define SG_NEED_STREAMBUF_HACK 1
|
||||||
|
|
||||||
|
class __streambuf : virtual public streambuf {
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef std::char_traits<char> traits_type;
|
||||||
|
typedef std::char_traits<char>::int_type int_type;
|
||||||
|
|
||||||
|
typedef streampos pos_type;
|
||||||
|
typedef streamoff off_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
# define pubsync sync
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::streambuf;
|
||||||
|
using ::streampos;
|
||||||
|
using ::streamoff;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // !__SG_STREAMBUF
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
#ifndef __SG_STRSTREAM
|
||||||
|
#define __SG_STRSTREAM 1
|
||||||
|
|
||||||
|
# include <strstream.h>
|
||||||
|
|
||||||
|
# if defined(sgi) && !defined(__GNUC__)
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::ends;
|
||||||
|
|
||||||
|
using ::strstream;
|
||||||
|
using ::istrstream;
|
||||||
|
using ::ostrstream;
|
||||||
|
};
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // !__SG_STRSTREAM
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
includedir = @includedir@/compatibility
|
||||||
|
|
||||||
|
EXTRA_DIST = README
|
||||||
|
|
||||||
|
include_HEADERS = \
|
||||||
|
cfloat \
|
||||||
|
csetjmp \
|
||||||
|
cstdio \
|
||||||
|
cwchar \
|
||||||
|
cassert \
|
||||||
|
climits \
|
||||||
|
csignal \
|
||||||
|
cstdlib \
|
||||||
|
cwctype \
|
||||||
|
cctype \
|
||||||
|
clocale \
|
||||||
|
cstdarg \
|
||||||
|
cstring \
|
||||||
|
cerrno \
|
||||||
|
cmath \
|
||||||
|
cstddef \
|
||||||
|
ctime
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
The following header files where taken from the boost clib package
|
||||||
|
(http://www.boost.org):
|
||||||
|
|
||||||
|
cassert climits csignal cstdlib cwctype
|
||||||
|
cctype clocale cstdarg cstring
|
||||||
|
cerrno cmath cstddef ctime
|
||||||
|
cfloat csetjmp cstdio cwchar
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CASSERT_HEADER
|
||||||
|
#define __CASSERT_HEADER
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#endif // CASSERT_HEADER
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CCTYPE_HEADER
|
||||||
|
#define __CCTYPE_HEADER
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::isalnum;
|
||||||
|
using ::isdigit;
|
||||||
|
using ::isprint;
|
||||||
|
using ::isupper;
|
||||||
|
using ::tolower;
|
||||||
|
using ::isalpha;
|
||||||
|
using ::isgraph;
|
||||||
|
using ::ispunct;
|
||||||
|
using ::isxdigit;
|
||||||
|
using ::toupper;
|
||||||
|
using ::iscntrl;
|
||||||
|
using ::islower;
|
||||||
|
using ::isspace;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CCTYPE_HEADER
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CERRNO_HEADER
|
||||||
|
#define __CERRNO_HEADER
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#endif // CERRNO_HEADER
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CFLOAT_HEADER
|
||||||
|
#define __CFLOAT_HEADER
|
||||||
|
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
|
#endif // CFLOAT_HEADER
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CLIMITS_HEADER
|
||||||
|
#define __CLIMITS_HEADER
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
|
#endif // CLIMITS_HEADER
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CLOCALE_HEADER
|
||||||
|
#define __CLOCALE_HEADER
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::lconv;
|
||||||
|
using ::localeconv;
|
||||||
|
using ::setlocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CLOCALE_HEADER
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CMATH_HEADER
|
||||||
|
#define __CMATH_HEADER
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::acos;
|
||||||
|
using ::cos;
|
||||||
|
using ::fmod;
|
||||||
|
using ::modf;
|
||||||
|
using ::tan;
|
||||||
|
using ::asin;
|
||||||
|
using ::cosh;
|
||||||
|
using ::frexp;
|
||||||
|
using ::pow;
|
||||||
|
using ::tanh;
|
||||||
|
using ::atan;
|
||||||
|
using ::exp;
|
||||||
|
using ::ldexp;
|
||||||
|
using ::sin;
|
||||||
|
using ::atan2;
|
||||||
|
using ::fabs;
|
||||||
|
using ::log;
|
||||||
|
using ::sinh;
|
||||||
|
using ::ceil;
|
||||||
|
using ::floor;
|
||||||
|
using ::log10;
|
||||||
|
using ::sqrt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CMATH_HEADER
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSETJMP_HEADER
|
||||||
|
#define __CSETJMP_HEADER
|
||||||
|
|
||||||
|
#include <setjmp.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::jmp_buf;
|
||||||
|
using ::longjmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSETJMP_HEADER
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSIGNAL_HEADER
|
||||||
|
#define __CSIGNAL_HEADER
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::sig_atomic_t;
|
||||||
|
using ::raise;
|
||||||
|
using ::signal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSIGNAL_HEADER
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSTDARG_HEADER
|
||||||
|
#define __CSTDARG_HEADER
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::va_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSTDARG_HEADER
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSTDDEF_HEADER
|
||||||
|
#define __CSTDDEF_HEADER
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::ptrdiff_t;
|
||||||
|
using ::size_t;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSTDDEF_HEADER
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSTDIO_HEADER
|
||||||
|
#define __CSTDIO_HEADER
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::FILE;
|
||||||
|
using ::fpos_t;
|
||||||
|
using ::size_t;
|
||||||
|
using ::clearerr;
|
||||||
|
using ::fgets;
|
||||||
|
using ::fscanf;
|
||||||
|
using ::gets;
|
||||||
|
using ::rename;
|
||||||
|
using ::tmpfile;
|
||||||
|
using ::fclose;
|
||||||
|
using ::fopen;
|
||||||
|
using ::fseek;
|
||||||
|
using ::perror;
|
||||||
|
using ::rewind;
|
||||||
|
using ::tmpnam;
|
||||||
|
using ::feof;
|
||||||
|
using ::fprintf;
|
||||||
|
using ::fsetpos;
|
||||||
|
using ::printf;
|
||||||
|
using ::scanf;
|
||||||
|
using ::ungetc;
|
||||||
|
using ::ferror;
|
||||||
|
using ::fputc;
|
||||||
|
using ::ftell;
|
||||||
|
using ::putc;
|
||||||
|
using ::setbuf;
|
||||||
|
using ::vfprintf;
|
||||||
|
using ::fflush;
|
||||||
|
using ::fputs;
|
||||||
|
using ::fwrite;
|
||||||
|
using ::putchar;
|
||||||
|
using ::setvbuf;
|
||||||
|
using ::vprintf;
|
||||||
|
using ::fgetc;
|
||||||
|
using ::fread;
|
||||||
|
using ::getc;
|
||||||
|
using ::puts;
|
||||||
|
using ::sprintf;
|
||||||
|
using ::vsprintf;
|
||||||
|
using ::fgetpos;
|
||||||
|
using ::freopen;
|
||||||
|
using ::getchar;
|
||||||
|
using ::remove;
|
||||||
|
using ::sscanf;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSTDIO_HEADER
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSTDLIB_HEADER
|
||||||
|
#define __CSTDLIB_HEADER
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::abort;
|
||||||
|
using ::atexit;
|
||||||
|
using ::exit;
|
||||||
|
using ::getenv;
|
||||||
|
using ::system;
|
||||||
|
using ::calloc;
|
||||||
|
using ::malloc;
|
||||||
|
using ::free;
|
||||||
|
using ::realloc;
|
||||||
|
using ::atol;
|
||||||
|
using ::mblen;
|
||||||
|
using ::strtod;
|
||||||
|
using ::wctomb;
|
||||||
|
using ::atof;
|
||||||
|
using ::mbstowcs;
|
||||||
|
using ::strtol;
|
||||||
|
using ::wcstombs;
|
||||||
|
using ::atoi;
|
||||||
|
using ::mbtowc;
|
||||||
|
using ::strtoul;
|
||||||
|
using ::bsearch;
|
||||||
|
using ::qsort;
|
||||||
|
using ::div_t;
|
||||||
|
using ::ldiv_t;
|
||||||
|
using ::abs;
|
||||||
|
using ::labs;
|
||||||
|
using ::srand;
|
||||||
|
using ::div;
|
||||||
|
using ::ldiv;
|
||||||
|
using ::rand;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSTDLIB_HEADER
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CSTRING_HEADER
|
||||||
|
#define __CSTRING_HEADER
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::size_t;
|
||||||
|
using ::memchr;
|
||||||
|
using ::strcat;
|
||||||
|
using ::strcspn;
|
||||||
|
using ::strncpy;
|
||||||
|
using ::strtok;
|
||||||
|
using ::memcmp;
|
||||||
|
using ::strchr;
|
||||||
|
using ::strerror;
|
||||||
|
using ::strpbrk;
|
||||||
|
using ::strxfrm;
|
||||||
|
using ::memcpy;
|
||||||
|
using ::strcmp;
|
||||||
|
using ::strlen;
|
||||||
|
using ::strrchr;
|
||||||
|
using ::memmove;
|
||||||
|
using ::strcoll;
|
||||||
|
using ::strncat;
|
||||||
|
using ::strspn;
|
||||||
|
using ::memset;
|
||||||
|
using ::strcpy;
|
||||||
|
using ::strncmp;
|
||||||
|
using ::strstr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CSTRING_HEADER
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CTIME_HEADER
|
||||||
|
#define __CTIME_HEADER
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::size_t;
|
||||||
|
using ::clock_t;
|
||||||
|
using ::time_t;
|
||||||
|
using ::tm;
|
||||||
|
using ::asctime;
|
||||||
|
using ::clock;
|
||||||
|
using ::difftime;
|
||||||
|
using ::localtime;
|
||||||
|
using ::strftime;
|
||||||
|
using ::ctime;
|
||||||
|
using ::gmtime;
|
||||||
|
using ::mktime;
|
||||||
|
using ::time;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CTIME_HEADER
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CWCHAR_HEADER
|
||||||
|
#define __CWCHAR_HEADER
|
||||||
|
|
||||||
|
#include <wchar.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
using ::mbstate_t;
|
||||||
|
using ::wint_t;
|
||||||
|
using ::size_t;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::btowc;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::getwchar;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::ungetwc;
|
||||||
|
#endif
|
||||||
|
using ::wcscpy;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wcsrtombs;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wmemchr;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::fgetwc;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::mbrlen;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::vfwprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
using ::wcscspn;
|
||||||
|
using ::wcsspn;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wmemcmp;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::fgetws;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::mbrtowc;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::vswprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::wcsftime;
|
||||||
|
#endif
|
||||||
|
using ::wcsstr;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wmemcpy;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::fputwc;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::mbsinit;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::vwprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
using ::wcslen;
|
||||||
|
using ::wcstod;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wmemmove;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::fputws;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::mbsrtowcs;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wcrtomb;
|
||||||
|
#endif
|
||||||
|
using ::wcsncat;
|
||||||
|
using ::wcstok;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wmemset;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__DECCXX_VER) && __DECCXX_VER <= 60290024)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::fwide;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::putwc;
|
||||||
|
#endif
|
||||||
|
using ::wcscat;
|
||||||
|
using ::wcsncmp;
|
||||||
|
using ::wcstol;
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::fwprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::putwchar;
|
||||||
|
#endif
|
||||||
|
using ::wcschr;
|
||||||
|
using ::wcsncpy;
|
||||||
|
using ::wcstoul;
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wscanf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::fwscanf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::swprintf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
using ::wcscmp;
|
||||||
|
using ::wcspbrk;
|
||||||
|
using ::wcsxfrm;
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
using ::getwc;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005)
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::swscanf;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
using ::wcscoll;
|
||||||
|
using ::wcsrchr;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wctob;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CWCHAR_HEADER
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
// This file is automatically generated. Do not edit.
|
||||||
|
// ['../../../libs/compatibility/generate_cpp_c_headers.py']
|
||||||
|
// Mon Apr 16 15:16:00 2001 ('PST', 'PDT')
|
||||||
|
|
||||||
|
#ifndef __CWCTYPE_HEADER
|
||||||
|
#define __CWCTYPE_HEADER
|
||||||
|
|
||||||
|
#include <wctype.h>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wctrans_t;
|
||||||
|
#endif
|
||||||
|
using ::wctype_t;
|
||||||
|
using ::wint_t;
|
||||||
|
using ::iswalnum;
|
||||||
|
using ::iswctype;
|
||||||
|
using ::iswlower;
|
||||||
|
using ::iswspace;
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::towctrans;
|
||||||
|
#endif
|
||||||
|
#if !(defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
|
||||||
|
using ::wctrans;
|
||||||
|
#endif
|
||||||
|
using ::iswalpha;
|
||||||
|
using ::iswdigit;
|
||||||
|
using ::iswprint;
|
||||||
|
using ::iswupper;
|
||||||
|
using ::towlower;
|
||||||
|
using ::wctype;
|
||||||
|
using ::iswcntrl;
|
||||||
|
using ::iswgraph;
|
||||||
|
using ::iswpunct;
|
||||||
|
using ::iswxdigit;
|
||||||
|
using ::towupper;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CWCTYPE_HEADER
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
SUBDIRS = $(MIPSpro_DIRS)
|
||||||
|
|
||||||
|
DIST_SUBDIRS = MIPSpro721 MIPSpro740
|
||||||
+49
-27
@@ -11,10 +11,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
*
|
*
|
||||||
@@ -121,7 +120,7 @@
|
|||||||
# define STL_STRSTREAM <strstream>
|
# define STL_STRSTREAM <strstream>
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
# elif __GNUC__ == 3
|
# elif __GNUC__ >= 3
|
||||||
// g++-3.0.x
|
// g++-3.0.x
|
||||||
# define SG_EXPLICIT_FUNCTION_TMPL_ARGS
|
# define SG_EXPLICIT_FUNCTION_TMPL_ARGS
|
||||||
# define SG_NEED_AUTO_PTR
|
# define SG_NEED_AUTO_PTR
|
||||||
@@ -149,12 +148,6 @@
|
|||||||
|
|
||||||
#endif // __GNUC__
|
#endif // __GNUC__
|
||||||
|
|
||||||
#if defined( __MINGW32__ )
|
|
||||||
# define bcopy(from, to, n) memcpy(to, from, n)
|
|
||||||
# define FG_MEM_COPY(to,from,n) memcpy(to, from, n)
|
|
||||||
# define snprintf _snprintf
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* KAI C++ */
|
/* KAI C++ */
|
||||||
#if defined(__KCC)
|
#if defined(__KCC)
|
||||||
|
|
||||||
@@ -219,7 +212,7 @@
|
|||||||
# define bcopy(from, to, n) memcpy(to, from, n)
|
# define bcopy(from, to, n) memcpy(to, from, n)
|
||||||
# define FG_MEM_COPY(to,from,n) memcpy(to, from, n)
|
# define FG_MEM_COPY(to,from,n) memcpy(to, from, n)
|
||||||
|
|
||||||
# if _MSC_VER == 1200 // msvc++ 6.0
|
# if _MSC_VER >= 1200 // msvc++ 6.0 or greater
|
||||||
# define SG_NAMESPACES
|
# define SG_NAMESPACES
|
||||||
# define SG_HAVE_STD
|
# define SG_HAVE_STD
|
||||||
# define SG_HAVE_STD_INCLUDES
|
# define SG_HAVE_STD_INCLUDES
|
||||||
@@ -235,7 +228,9 @@
|
|||||||
# define STL_STRING <string>
|
# define STL_STRING <string>
|
||||||
# define STL_STRSTREAM <strstream>
|
# define STL_STRSTREAM <strstream>
|
||||||
|
|
||||||
|
# define isnan _isnan
|
||||||
# define snprintf _snprintf
|
# define snprintf _snprintf
|
||||||
|
# define copysign _copysign
|
||||||
|
|
||||||
# pragma warning(disable: 4786) // identifier was truncated to '255' characters
|
# pragma warning(disable: 4786) // identifier was truncated to '255' characters
|
||||||
# pragma warning(disable: 4244) // conversion from double to float
|
# pragma warning(disable: 4244) // conversion from double to float
|
||||||
@@ -291,42 +286,45 @@
|
|||||||
# define SG_HAVE_NATIVE_SGI_COMPILERS
|
# define SG_HAVE_NATIVE_SGI_COMPILERS
|
||||||
|
|
||||||
# define SG_EXPLICIT_FUNCTION_TMPL_ARGS
|
# define SG_EXPLICIT_FUNCTION_TMPL_ARGS
|
||||||
|
# define SG_CLASS_PARTIAL_SPECIALIZATION
|
||||||
# define SG_NEED_AUTO_PTR
|
# define SG_NEED_AUTO_PTR
|
||||||
# define SG_MEMBER_TEMPLATES
|
# define SG_MEMBER_TEMPLATES
|
||||||
# define SG_NAMESPACES
|
# define SG_NAMESPACES
|
||||||
# define SG_HAVE_STD
|
# define SG_HAVE_STD
|
||||||
# define SG_CLASS_PARTIAL_SPECIALIZATION
|
# define SG_HAVE_STREAMBUF
|
||||||
# define SG_HAVE_TRAITS
|
# define SG_HAVE_TRAITS
|
||||||
|
# define SG_HAVE_STD_INCLUDES
|
||||||
|
|
||||||
# define STL_ALGORITHM <algorithm>
|
# define STL_ALGORITHM <algorithm>
|
||||||
# define STL_FUNCTIONAL <functional>
|
# define STL_FUNCTIONAL <functional>
|
||||||
# define STL_IOMANIP <iomanip.h>
|
# define STL_IOMANIP <iomanip>
|
||||||
# define STL_IOSTREAM <iostream.h>
|
# define STL_IOSTREAM <iostream>
|
||||||
# define STL_ITERATOR <iterator.h>
|
# define STL_ITERATOR <iterator>
|
||||||
# define STL_FSTREAM <fstream.h>
|
# define STL_FSTREAM <fstream>
|
||||||
# define STL_STDEXCEPT <stdexcept>
|
# define STL_STDEXCEPT <stdexcept>
|
||||||
|
#if (_COMPILER_VERSION < 740)
|
||||||
|
# define STL_STRING <irix_string>
|
||||||
|
#else
|
||||||
# define STL_STRING <string>
|
# define STL_STRING <string>
|
||||||
# define STL_STRSTREAM <strstream.h>
|
#endif
|
||||||
|
# define STL_STRSTREAM <strstream>
|
||||||
// # define __STL_FUNCTION_TMPL_PARTIAL_ORDER
|
|
||||||
// typedef void PFNGLPOINTPARAMETERFEXTPROC
|
|
||||||
|
|
||||||
#define glPointParameterfEXT glPointParameterfSGIS
|
|
||||||
#define glPointParameterfvEXT glPointParameterfvSGIS
|
|
||||||
|
|
||||||
#pragma set woff 1001,1012,1014,1116,1155,1172,1174
|
#pragma set woff 1001,1012,1014,1116,1155,1172,1174
|
||||||
#pragma set woff 1401,1460,1551,1552,1681
|
#pragma set woff 1401,1460,1551,1552,1681
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#pragma set woff 1682,3303
|
#pragma set woff 1682,3303
|
||||||
|
#if (_COMPILER_VERSION >= 740)
|
||||||
|
# pragma set woff 3624
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# define SG_COMPILER_STR "SGI Irix compiler version " SG_STRINGIZE(_COMPILER_VERSION)
|
# define SG_COMPILER_STR "SGI MipsPro compiler version " SG_STRINGIZE(_COMPILER_VERSION)
|
||||||
|
|
||||||
#endif // Native SGI compilers
|
#endif // Native SGI compilers
|
||||||
|
|
||||||
|
|
||||||
#if defined ( sun )
|
#if defined (__sun)
|
||||||
# include <strings.h>
|
# include <strings.h>
|
||||||
# include <memory.h>
|
# include <memory.h>
|
||||||
# if defined ( __cplusplus )
|
# if defined ( __cplusplus )
|
||||||
@@ -338,7 +336,9 @@
|
|||||||
extern void *memmove(void *, const void *, size_t);
|
extern void *memmove(void *, const void *, size_t);
|
||||||
# endif // __cplusplus
|
# endif // __cplusplus
|
||||||
|
|
||||||
# define SG_COMPILER_STR "Sun compiler version " SG_STRINGIZE(__SUNPRO_CC)
|
# if !defined( __GNUC__ )
|
||||||
|
# define SG_COMPILER_STR "Sun compiler version " SG_STRINGIZE(__SUNPRO_CC)
|
||||||
|
# endif
|
||||||
|
|
||||||
#endif // sun
|
#endif // sun
|
||||||
|
|
||||||
@@ -366,6 +366,27 @@
|
|||||||
|
|
||||||
#endif // __ICC
|
#endif // __ICC
|
||||||
|
|
||||||
|
//
|
||||||
|
// Platform dependent gl.h and glut.h definitions
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
# define SG_GL_H <OpenGL/gl.h>
|
||||||
|
# define SG_GLX_H <AGL/agl.h>
|
||||||
|
# define SG_GLU_H <OpenGL/glu.h>
|
||||||
|
# define SG_GLEXT_H <OpenGL/glext.h>
|
||||||
|
# define SG_GLUT_H <GLUT/glut.h>
|
||||||
|
|
||||||
|
inline int (isnan)(double r) { return !(r <= 0 || r >= 0); }
|
||||||
|
#else
|
||||||
|
# define SG_GL_H <GL/gl.h>
|
||||||
|
# define SG_GLX_H <GL/glx.h>
|
||||||
|
# define SG_GLU_H <GL/glu.h>
|
||||||
|
# define SG_GLEXT_H <GL/glext.h>
|
||||||
|
# define SG_GLUT_H <GL/glut.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// No user modifiable definitions beyond here.
|
// No user modifiable definitions beyond here.
|
||||||
//
|
//
|
||||||
@@ -447,3 +468,4 @@ inline const_mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)() const)
|
|||||||
#endif // SG_INCOMPLETE_FUNCTIONAL
|
#endif // SG_INCOMPLETE_FUNCTIONAL
|
||||||
|
|
||||||
#endif // _SG_COMPILER_H
|
#endif // _SG_COMPILER_H
|
||||||
|
|
||||||
|
|||||||
+42
-7
@@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Written by Curtis Olson, started February 2000.
|
// Written by Curtis Olson, started February 2000.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt/
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -14,10 +14,9 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -106,21 +105,57 @@
|
|||||||
#define SG_METER_TO_FEET 3.28083989501312335958
|
#define SG_METER_TO_FEET 3.28083989501312335958
|
||||||
|
|
||||||
/** Meters to Nautical Miles. 1 nm = 6076.11549 feet */
|
/** Meters to Nautical Miles. 1 nm = 6076.11549 feet */
|
||||||
#define SG_METER_TO_NM 0.00053995680
|
#define SG_METER_TO_NM 0.0005399568034557235
|
||||||
|
|
||||||
/** Nautical Miles to Meters */
|
/** Nautical Miles to Meters */
|
||||||
#define SG_NM_TO_METER 1852.0000
|
#define SG_NM_TO_METER 1852.0000
|
||||||
|
|
||||||
|
/** Meters to Statute Miles. */
|
||||||
|
#define SG_METER_TO_SM 0.0006213699494949496
|
||||||
|
|
||||||
|
/** Statute Miles to Meters. */
|
||||||
|
#define SG_SM_TO_METER 1609.3412196
|
||||||
|
|
||||||
/** Radians to Nautical Miles. 1 nm = 1/60 of a degree */
|
/** Radians to Nautical Miles. 1 nm = 1/60 of a degree */
|
||||||
#define SG_NM_TO_RAD 0.00029088820866572159
|
#define SG_NM_TO_RAD 0.00029088820866572159
|
||||||
|
|
||||||
/** Nautical Miles to Radians */
|
/** Nautical Miles to Radians */
|
||||||
#define SG_RAD_TO_NM 3437.7467707849392526
|
#define SG_RAD_TO_NM 3437.7467707849392526
|
||||||
|
|
||||||
|
/** Miles per second to Knots */
|
||||||
|
#define SG_MPS_TO_KT 1.9438444924406046432
|
||||||
|
|
||||||
|
/** Knots to Miles per second */
|
||||||
|
#define SG_KT_TO_MPS 0.5144444444444444444
|
||||||
|
|
||||||
|
/** Feet per second to Knots */
|
||||||
|
#define SG_FPS_TO_KT 0.5924838012958962841
|
||||||
|
|
||||||
|
/** Knots to Feet per second */
|
||||||
|
#define SG_KT_TO_FPS 1.6878098571011956874
|
||||||
|
|
||||||
|
/** Miles per second to Miles per hour */
|
||||||
|
#define SG_MPS_TO_MPH 2.2369362920544020312
|
||||||
|
|
||||||
|
/** Miles per hour to Miles per second */
|
||||||
|
#define SG_MPH_TO_MPS 0.44704
|
||||||
|
|
||||||
|
/** Meters per second to Kilometers per hour */
|
||||||
|
#define SG_MPS_TO_KMH 3.6
|
||||||
|
|
||||||
|
/** Kilometers per hour to Miles per second */
|
||||||
|
#define SG_KMH_TO_MPS 0.2777777777777777778
|
||||||
|
|
||||||
|
/** Pascal to Inch Mercury */
|
||||||
|
#define SG_PA_TO_INHG 0.0002952998330101010
|
||||||
|
|
||||||
|
/** Inch Mercury to Pascal */
|
||||||
|
#define SG_INHG_TO_PA 3386.388640341
|
||||||
|
|
||||||
|
|
||||||
/** For divide by zero avoidance, this will be close enough to zero */
|
/** For divide by zero avoidance, this will be close enough to zero */
|
||||||
#define SG_EPSILON 0.0000001
|
#define SG_EPSILON 0.0000001
|
||||||
|
|
||||||
|
|
||||||
/** Highest binobj format version we know how to read/write. This starts at
|
/** Highest binobj format version we know how to read/write. This starts at
|
||||||
* 0 and can go up to 65535 */
|
* 0 and can go up to 65535 */
|
||||||
#define SG_BINOBJ_VERSION 6
|
#define SG_BINOBJ_VERSION 6
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ typedef enum {
|
|||||||
SG_IO = 0x00001000,
|
SG_IO = 0x00001000,
|
||||||
SG_CLIPPER = 0x00002000,
|
SG_CLIPPER = 0x00002000,
|
||||||
SG_NETWORK = 0x00004000,
|
SG_NETWORK = 0x00004000,
|
||||||
SG_UNDEFD = 0x00008000, // For range checking
|
SG_ATC = 0x00008000,
|
||||||
|
SG_NASAL = 0x00010000,
|
||||||
|
SG_INSTR = 0x00020000,
|
||||||
|
SG_SYSTEMS = 0x00040000,
|
||||||
|
SG_UNDEFD = 0x00080000, // For range checking
|
||||||
|
|
||||||
SG_ALL = 0xFFFFFFFF
|
SG_ALL = 0xFFFFFFFF
|
||||||
} sgDebugClass;
|
} sgDebugClass;
|
||||||
@@ -33,11 +37,12 @@ typedef enum {
|
|||||||
* Define the possible logging priorities (and their order).
|
* Define the possible logging priorities (and their order).
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SG_BULK, // For frequent messages
|
SG_BULK = 1, // For frequent messages
|
||||||
SG_DEBUG, // Less frequent debug type messages
|
SG_DEBUG, // Less frequent debug type messages
|
||||||
SG_INFO, // Informatory messages
|
SG_INFO, // Informatory messages
|
||||||
SG_WARN, // Possible impending problem
|
SG_WARN, // Possible impending problem
|
||||||
SG_ALERT // Very possible impending problem
|
SG_ALERT // Very possible impending problem
|
||||||
// SG_EXIT, // Problem (no core)
|
// SG_EXIT, // Problem (no core)
|
||||||
// SG_ABORT // Abandon ship (core)
|
// SG_ABORT // Abandon ship (core)
|
||||||
} sgDebugPriority;
|
} sgDebugPriority;
|
||||||
|
|
||||||
|
|||||||
@@ -14,10 +14,9 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -26,6 +25,9 @@
|
|||||||
logstream *global_logstream = NULL;
|
logstream *global_logstream = NULL;
|
||||||
|
|
||||||
bool logbuf::logging_enabled = true;
|
bool logbuf::logging_enabled = true;
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
bool logbuf::has_console = true;
|
||||||
|
#endif
|
||||||
sgDebugClass logbuf::logClass = SG_NONE;
|
sgDebugClass logbuf::logClass = SG_NONE;
|
||||||
sgDebugPriority logbuf::logPriority = SG_INFO;
|
sgDebugPriority logbuf::logPriority = SG_INFO;
|
||||||
streambuf* logbuf::sbuf = NULL;
|
streambuf* logbuf::sbuf = NULL;
|
||||||
|
|||||||
+32
-11
@@ -16,10 +16,9 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -28,9 +27,8 @@
|
|||||||
|
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
|
|
||||||
// At least Irix needs this
|
#ifdef _MSC_VER
|
||||||
#ifdef SG_HAVE_NATIVE_SGI_COMPILERS
|
# include <windows.h>
|
||||||
#include <char_traits.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SG_HAVE_STD_INCLUDES
|
#ifdef SG_HAVE_STD_INCLUDES
|
||||||
@@ -43,14 +41,11 @@
|
|||||||
|
|
||||||
#include <simgear/debug/debug_types.h>
|
#include <simgear/debug/debug_types.h>
|
||||||
|
|
||||||
#ifndef SG_HAVE_NATIVE_SGI_COMPILERS
|
|
||||||
SG_USING_STD(streambuf);
|
SG_USING_STD(streambuf);
|
||||||
SG_USING_STD(ostream);
|
SG_USING_STD(ostream);
|
||||||
|
SG_USING_STD(cout);
|
||||||
SG_USING_STD(cerr);
|
SG_USING_STD(cerr);
|
||||||
SG_USING_STD(endl);
|
SG_USING_STD(endl);
|
||||||
#else
|
|
||||||
SG_USING_STD(char_traits);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __MWERKS__
|
#ifdef __MWERKS__
|
||||||
SG_USING_STD(iostream);
|
SG_USING_STD(iostream);
|
||||||
@@ -69,7 +64,11 @@ SG_USING_STD(iostream);
|
|||||||
* messages at runtime. Only messages with priority >= logbuf::logPriority
|
* messages at runtime. Only messages with priority >= logbuf::logPriority
|
||||||
* and debugClass == logbuf::logClass are output.
|
* and debugClass == logbuf::logClass are output.
|
||||||
*/
|
*/
|
||||||
|
#ifdef SG_NEED_STREAMBUF_HACK
|
||||||
|
class logbuf : public __streambuf
|
||||||
|
#else
|
||||||
class logbuf : public streambuf
|
class logbuf : public streambuf
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -140,6 +139,10 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_sb( streambuf* sb );
|
void set_sb( streambuf* sb );
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
static void has_no_console() { has_console = false; }
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/** sync/flush */
|
/** sync/flush */
|
||||||
@@ -155,6 +158,9 @@ private:
|
|||||||
static streambuf* sbuf;
|
static streambuf* sbuf;
|
||||||
|
|
||||||
static bool logging_enabled;
|
static bool logging_enabled;
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
static bool has_console;
|
||||||
|
#endif
|
||||||
static sgDebugClass logClass;
|
static sgDebugClass logClass;
|
||||||
static sgDebugPriority logPriority;
|
static sgDebugPriority logPriority;
|
||||||
|
|
||||||
@@ -184,7 +190,22 @@ logbuf::set_log_state( sgDebugClass c, sgDebugPriority p )
|
|||||||
inline logbuf::int_type
|
inline logbuf::int_type
|
||||||
logbuf::overflow( int c )
|
logbuf::overflow( int c )
|
||||||
{
|
{
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
if ( logging_enabled ) {
|
||||||
|
if ( !has_console ) {
|
||||||
|
AllocConsole();
|
||||||
|
freopen("conin$", "r", stdin);
|
||||||
|
freopen("conout$", "w", stdout);
|
||||||
|
freopen("conout$", "w", stderr);
|
||||||
|
has_console = true;
|
||||||
|
}
|
||||||
|
return sbuf->sputc(c);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return EOF == 0 ? 1: 0;
|
||||||
|
#else
|
||||||
return logging_enabled ? sbuf->sputc(c) : (EOF == 0 ? 1: 0);
|
return logging_enabled ? sbuf->sputc(c) : (EOF == 0 ? 1: 0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
.deps
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
metar
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
includedir = @includedir@/environment
|
||||||
|
|
||||||
|
lib_LIBRARIES = libsgenvironment.a
|
||||||
|
|
||||||
|
include_HEADERS = metar.hxx visual_enviro.hxx
|
||||||
|
|
||||||
|
libsgenvironment_a_SOURCES = metar.cxx visual_enviro.cxx
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_srcdir)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,282 @@
|
|||||||
|
// metar interface class
|
||||||
|
//
|
||||||
|
// Written by Melchior FRANZ, started December 2003.
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 Melchior FRANZ - mfranz@aon.at
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful, but
|
||||||
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
//
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
#ifndef _METAR_HXX
|
||||||
|
#define _METAR_HXX
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <simgear/constants.h>
|
||||||
|
|
||||||
|
SG_USING_STD(vector);
|
||||||
|
SG_USING_STD(map);
|
||||||
|
SG_USING_STD(string);
|
||||||
|
|
||||||
|
const double SGMetarNaN = -1E20;
|
||||||
|
#define NaN SGMetarNaN
|
||||||
|
|
||||||
|
struct Token {
|
||||||
|
char *id;
|
||||||
|
char *text;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class SGMetar;
|
||||||
|
|
||||||
|
class SGMetarVisibility {
|
||||||
|
friend class SGMetar;
|
||||||
|
public:
|
||||||
|
SGMetarVisibility() :
|
||||||
|
_distance(NaN),
|
||||||
|
_direction(-1),
|
||||||
|
_modifier(EQUALS),
|
||||||
|
_tendency(NONE) {}
|
||||||
|
|
||||||
|
enum Modifier {
|
||||||
|
NOGO,
|
||||||
|
EQUALS,
|
||||||
|
LESS_THAN,
|
||||||
|
GREATER_THAN
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Tendency {
|
||||||
|
NONE,
|
||||||
|
STABLE,
|
||||||
|
INCREASING,
|
||||||
|
DECREASING
|
||||||
|
};
|
||||||
|
|
||||||
|
void set(double dist, int dir = -1, int mod = -1, int tend = -1);
|
||||||
|
|
||||||
|
inline double getVisibility_m() const { return _distance; }
|
||||||
|
inline double getVisibility_ft() const { return _distance == NaN ? NaN : _distance * SG_METER_TO_FEET; }
|
||||||
|
inline double getVisibility_sm() const { return _distance == NaN ? NaN : _distance * SG_METER_TO_SM; }
|
||||||
|
inline int getDirection() const { return _direction; }
|
||||||
|
inline int getModifier() const { return _modifier; }
|
||||||
|
inline int getTendency() const { return _tendency; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
double _distance;
|
||||||
|
int _direction;
|
||||||
|
int _modifier;
|
||||||
|
int _tendency;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// runway condition (surface and visibility)
|
||||||
|
class SGMetarRunway {
|
||||||
|
friend class SGMetar;
|
||||||
|
public:
|
||||||
|
SGMetarRunway() :
|
||||||
|
_deposit(-1),
|
||||||
|
_deposit_string(0),
|
||||||
|
_extent(-1),
|
||||||
|
_extent_string(0),
|
||||||
|
_depth(NaN),
|
||||||
|
_friction(NaN),
|
||||||
|
_friction_string(0),
|
||||||
|
_comment(0),
|
||||||
|
_wind_shear(false) {}
|
||||||
|
|
||||||
|
inline int getDeposit() const { return _deposit; }
|
||||||
|
inline const char *getDepositString() const { return _deposit_string; }
|
||||||
|
inline double getExtent() const { return _extent; }
|
||||||
|
inline const char *getExtentString() const { return _extent_string; }
|
||||||
|
inline double getDepth() const { return _depth; }
|
||||||
|
inline double getFriction() const { return _friction; }
|
||||||
|
inline const char *getFrictionString() const { return _friction_string; }
|
||||||
|
inline const char *getComment() const { return _comment; }
|
||||||
|
inline const bool getWindShear() const { return _wind_shear; }
|
||||||
|
inline const SGMetarVisibility& getMinVisibility() const { return _min_visibility; }
|
||||||
|
inline const SGMetarVisibility& getMaxVisibility() const { return _max_visibility; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SGMetarVisibility _min_visibility;
|
||||||
|
SGMetarVisibility _max_visibility;
|
||||||
|
int _deposit;
|
||||||
|
const char *_deposit_string;
|
||||||
|
int _extent;
|
||||||
|
const char *_extent_string;
|
||||||
|
double _depth;
|
||||||
|
double _friction;
|
||||||
|
const char *_friction_string;
|
||||||
|
const char *_comment;
|
||||||
|
bool _wind_shear;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// cloud layer
|
||||||
|
class SGMetarCloud {
|
||||||
|
friend class SGMetar;
|
||||||
|
public:
|
||||||
|
SGMetarCloud() :
|
||||||
|
_coverage(-1),
|
||||||
|
_altitude(NaN),
|
||||||
|
_type(0),
|
||||||
|
_type_long(0) {}
|
||||||
|
|
||||||
|
void set(double alt, int cov = -1);
|
||||||
|
|
||||||
|
inline int getCoverage() const { return _coverage; }
|
||||||
|
inline double getAltitude_m() const { return _altitude; }
|
||||||
|
inline double getAltitude_ft() const { return _altitude == NaN ? NaN : _altitude * SG_METER_TO_FEET; }
|
||||||
|
inline char *getTypeString() const { return _type; }
|
||||||
|
inline char *getTypeLongString() const { return _type_long; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int _coverage; // quarters: 0 -> clear ... 4 -> overcast
|
||||||
|
double _altitude; // 1000 m
|
||||||
|
char *_type; // CU
|
||||||
|
char *_type_long; // cumulus
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class SGMetar {
|
||||||
|
public:
|
||||||
|
SGMetar(const string& m, const string& proxy = "", const string& port = "",
|
||||||
|
const string &auth = "", const time_t time = 0);
|
||||||
|
~SGMetar();
|
||||||
|
|
||||||
|
enum ReportType {
|
||||||
|
NONE,
|
||||||
|
AUTO,
|
||||||
|
COR,
|
||||||
|
RTD
|
||||||
|
};
|
||||||
|
|
||||||
|
inline const char *getData() const { return _data; }
|
||||||
|
inline const char *getUnusedData() const { return _m; }
|
||||||
|
inline const bool getProxy() const { return _x_proxy; }
|
||||||
|
inline const char *getId() const { return _icao; }
|
||||||
|
inline int getYear() const { return _year; }
|
||||||
|
inline int getMonth() const { return _month; }
|
||||||
|
inline int getDay() const { return _day; }
|
||||||
|
inline int getHour() const { return _hour; }
|
||||||
|
inline int getMinute() const { return _minute; }
|
||||||
|
inline int getReportType() const { return _report_type; }
|
||||||
|
|
||||||
|
inline int getWindDir() const { return _wind_dir; }
|
||||||
|
inline double getWindSpeed_mps() const { return _wind_speed; }
|
||||||
|
inline double getWindSpeed_kmh() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_KMH; }
|
||||||
|
inline double getWindSpeed_kt() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_KT; }
|
||||||
|
inline double getWindSpeed_mph() const { return _wind_speed == NaN ? NaN : _wind_speed * SG_MPS_TO_MPH; }
|
||||||
|
|
||||||
|
inline double getGustSpeed_mps() const { return _gust_speed; }
|
||||||
|
inline double getGustSpeed_kmh() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_KMH; }
|
||||||
|
inline double getGustSpeed_kt() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_KT; }
|
||||||
|
inline double getGustSpeed_mph() const { return _gust_speed == NaN ? NaN : _gust_speed * SG_MPS_TO_MPH; }
|
||||||
|
|
||||||
|
inline int getWindRangeFrom() const { return _wind_range_from; }
|
||||||
|
inline int getWindRangeTo() const { return _wind_range_to; }
|
||||||
|
|
||||||
|
inline const SGMetarVisibility& getMinVisibility() const { return _min_visibility; }
|
||||||
|
inline const SGMetarVisibility& getMaxVisibility() const { return _max_visibility; }
|
||||||
|
inline const SGMetarVisibility& getVertVisibility() const { return _vert_visibility; }
|
||||||
|
inline const SGMetarVisibility *getDirVisibility() const { return _dir_visibility; }
|
||||||
|
|
||||||
|
inline double getTemperature_C() const { return _temp; }
|
||||||
|
inline double getTemperature_F() const { return _temp == NaN ? NaN : 1.8 * _temp + 32; }
|
||||||
|
inline double getDewpoint_C() const { return _dewp; }
|
||||||
|
inline double getDewpoint_F() const { return _dewp == NaN ? NaN : 1.8 * _dewp + 32; }
|
||||||
|
inline double getPressure_hPa() const { return _pressure == NaN ? NaN : _pressure / 100; }
|
||||||
|
inline double getPressure_inHg() const { return _pressure == NaN ? NaN : _pressure * SG_PA_TO_INHG; }
|
||||||
|
|
||||||
|
inline int getRain() const { return _rain; }
|
||||||
|
inline int getHail() const { return _hail; }
|
||||||
|
inline int getSnow() const { return _snow; }
|
||||||
|
inline bool getCAVOK() const { return _cavok; }
|
||||||
|
|
||||||
|
double getRelHumidity() const;
|
||||||
|
|
||||||
|
inline const vector<SGMetarCloud>& getClouds() const { return _clouds; }
|
||||||
|
inline const map<string, SGMetarRunway>& getRunways() const { return _runways; }
|
||||||
|
inline const vector<string>& getWeather() const { return _weather; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
string _url;
|
||||||
|
int _grpcount;
|
||||||
|
bool _x_proxy;
|
||||||
|
char *_data;
|
||||||
|
char *_m;
|
||||||
|
char _icao[5];
|
||||||
|
int _year;
|
||||||
|
int _month;
|
||||||
|
int _day;
|
||||||
|
int _hour;
|
||||||
|
int _minute;
|
||||||
|
int _report_type;
|
||||||
|
int _wind_dir;
|
||||||
|
double _wind_speed;
|
||||||
|
double _gust_speed;
|
||||||
|
int _wind_range_from;
|
||||||
|
int _wind_range_to;
|
||||||
|
double _temp;
|
||||||
|
double _dewp;
|
||||||
|
double _pressure;
|
||||||
|
int _rain;
|
||||||
|
int _hail;
|
||||||
|
int _snow;
|
||||||
|
bool _cavok;
|
||||||
|
|
||||||
|
SGMetarVisibility _min_visibility;
|
||||||
|
SGMetarVisibility _max_visibility;
|
||||||
|
SGMetarVisibility _vert_visibility;
|
||||||
|
SGMetarVisibility _dir_visibility[8];
|
||||||
|
vector<SGMetarCloud> _clouds;
|
||||||
|
map<string, SGMetarRunway> _runways;
|
||||||
|
vector<string> _weather;
|
||||||
|
|
||||||
|
bool scanPreambleDate();
|
||||||
|
bool scanPreambleTime();
|
||||||
|
void useCurrentDate();
|
||||||
|
|
||||||
|
bool scanType();
|
||||||
|
bool scanId();
|
||||||
|
bool scanDate();
|
||||||
|
bool scanModifier();
|
||||||
|
bool scanWind();
|
||||||
|
bool scanVariability();
|
||||||
|
bool scanVisibility();
|
||||||
|
bool scanRwyVisRange();
|
||||||
|
bool scanSkyCondition();
|
||||||
|
bool scanWeather();
|
||||||
|
bool scanTemperature();
|
||||||
|
bool scanPressure();
|
||||||
|
bool scanRunwayReport();
|
||||||
|
bool scanWindShear();
|
||||||
|
bool scanTrendForecast();
|
||||||
|
bool scanColorState();
|
||||||
|
bool scanRemark();
|
||||||
|
bool scanRemainder();
|
||||||
|
|
||||||
|
int scanNumber(char **str, int *num, int min, int max = 0);
|
||||||
|
bool scanBoundary(char **str);
|
||||||
|
const struct Token *scanToken(char **str, const struct Token *list);
|
||||||
|
char *loadData(const char *id, const string& proxy, const string& port,
|
||||||
|
const string &auth, time_t time);
|
||||||
|
void normalizeData();
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef NaN
|
||||||
|
#endif // _METAR_HXX
|
||||||
@@ -0,0 +1,831 @@
|
|||||||
|
// Visual environment helper class
|
||||||
|
//
|
||||||
|
// Written by Harald JOHNSEN, started April 2005.
|
||||||
|
// Minor changes/additions by Vivian Meazza Apr- May 2007
|
||||||
|
//
|
||||||
|
// Ported to OSG by Tim Moore Jun 2007
|
||||||
|
//
|
||||||
|
// Copyright (C) 2005 Harald JOHNSEN - hjohnsen@evc.net
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful, but
|
||||||
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <simgear_config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <simgear/constants.h>
|
||||||
|
#include <simgear/structure/SGReferenced.hxx>
|
||||||
|
#include <simgear/structure/SGSharedPtr.hxx>
|
||||||
|
#include <simgear/math/sg_random.h>
|
||||||
|
#include <simgear/math/sg_geodesy.hxx>
|
||||||
|
#include <simgear/math/point3d.hxx>
|
||||||
|
#include <simgear/math/polar3d.hxx>
|
||||||
|
#include <simgear/sound/soundmgr_openal.hxx>
|
||||||
|
#include <simgear/scene/sky/cloudfield.hxx>
|
||||||
|
#include <simgear/scene/sky/newcloud.hxx>
|
||||||
|
#include <simgear/props/props.hxx>
|
||||||
|
#include "visual_enviro.hxx"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
SG_USING_STD(vector);
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Point3D pt;
|
||||||
|
int depth;
|
||||||
|
int prev;
|
||||||
|
} lt_tree_seg;
|
||||||
|
|
||||||
|
#define MAX_RAIN_SLICE 200
|
||||||
|
static float rainpos[MAX_RAIN_SLICE];
|
||||||
|
#define MAX_LT_TREE_SEG 400
|
||||||
|
|
||||||
|
#define DFL_MIN_LIGHT 0.35
|
||||||
|
sgVec3 SGEnviro::min_light = {DFL_MIN_LIGHT, DFL_MIN_LIGHT, DFL_MIN_LIGHT};
|
||||||
|
#define DFL_STREAK_BRIGHT_NEARMOST_LAYER 0.9
|
||||||
|
SGfloat SGEnviro::streak_bright_nearmost_layer = DFL_STREAK_BRIGHT_NEARMOST_LAYER;
|
||||||
|
#define DFL_STREAK_BRIGHT_FARMOST_LAYER 0.5
|
||||||
|
SGfloat SGEnviro::streak_bright_farmost_layer = DFL_STREAK_BRIGHT_FARMOST_LAYER;
|
||||||
|
#define DFL_STREAK_PERIOD_MAX 2.5
|
||||||
|
SGfloat SGEnviro::streak_period_max = DFL_STREAK_PERIOD_MAX;
|
||||||
|
#define DFL_STREAK_PERIOD_CHANGE_PER_KT 0.005
|
||||||
|
SGfloat SGEnviro::streak_period_change_per_kt = DFL_STREAK_PERIOD_CHANGE_PER_KT;
|
||||||
|
#define DFL_STREAK_PERIOD_MIN 1.0
|
||||||
|
SGfloat SGEnviro::streak_period_min = DFL_STREAK_PERIOD_MIN;
|
||||||
|
#define DFL_STREAK_LENGTH_MIN 0.03
|
||||||
|
SGfloat SGEnviro::streak_length_min = DFL_STREAK_LENGTH_MIN;
|
||||||
|
#define DFL_STREAK_LENGTH_CHANGE_PER_KT 0.0005
|
||||||
|
SGfloat SGEnviro::streak_length_change_per_kt = DFL_STREAK_LENGTH_CHANGE_PER_KT;
|
||||||
|
#define DFL_STREAK_LENGTH_MAX 0.1
|
||||||
|
SGfloat SGEnviro::streak_length_max = DFL_STREAK_LENGTH_MAX;
|
||||||
|
#define DFL_STREAK_COUNT_MIN 40
|
||||||
|
int SGEnviro::streak_count_min = DFL_STREAK_COUNT_MIN;
|
||||||
|
#define DFL_STREAK_COUNT_MAX 190
|
||||||
|
#if (DFL_STREAK_COUNT_MAX > MAX_RAIN_SLICE)
|
||||||
|
#error "Bad default!"
|
||||||
|
#endif
|
||||||
|
int SGEnviro::streak_count_max = DFL_STREAK_COUNT_MAX;
|
||||||
|
#define DFL_CONE_BASE_RADIUS 15.0
|
||||||
|
SGfloat SGEnviro::cone_base_radius = DFL_CONE_BASE_RADIUS;
|
||||||
|
#define DFL_CONE_HEIGHT 30.0
|
||||||
|
SGfloat SGEnviro::cone_height = DFL_CONE_HEIGHT;
|
||||||
|
|
||||||
|
|
||||||
|
void SGEnviro::config(const SGPropertyNode* n)
|
||||||
|
{
|
||||||
|
if (!n)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const float ml = n->getFloatValue("min-light", DFL_MIN_LIGHT);
|
||||||
|
sgSetVec3(min_light, ml, ml, ml);
|
||||||
|
|
||||||
|
streak_bright_nearmost_layer = n->getFloatValue(
|
||||||
|
"streak-brightness-nearmost-layer",
|
||||||
|
DFL_STREAK_BRIGHT_NEARMOST_LAYER);
|
||||||
|
streak_bright_farmost_layer = n->getFloatValue(
|
||||||
|
"streak-brightness-farmost-layer",
|
||||||
|
DFL_STREAK_BRIGHT_FARMOST_LAYER);
|
||||||
|
|
||||||
|
streak_period_max = n->getFloatValue(
|
||||||
|
"streak-period-max",
|
||||||
|
DFL_STREAK_PERIOD_MAX);
|
||||||
|
streak_period_min = n->getFloatValue(
|
||||||
|
"streak-period-min",
|
||||||
|
DFL_STREAK_PERIOD_MIN);
|
||||||
|
streak_period_change_per_kt = n->getFloatValue(
|
||||||
|
"streak-period-change-per-kt",
|
||||||
|
DFL_STREAK_PERIOD_CHANGE_PER_KT);
|
||||||
|
|
||||||
|
streak_length_max = n->getFloatValue(
|
||||||
|
"streak-length-max",
|
||||||
|
DFL_STREAK_LENGTH_MAX);
|
||||||
|
streak_length_min = n->getFloatValue(
|
||||||
|
"streak-length-min",
|
||||||
|
DFL_STREAK_LENGTH_MIN);
|
||||||
|
streak_length_change_per_kt = n->getFloatValue(
|
||||||
|
"streak-length-change-per-kt",
|
||||||
|
DFL_STREAK_LENGTH_CHANGE_PER_KT);
|
||||||
|
|
||||||
|
streak_count_min = n->getIntValue(
|
||||||
|
"streak-count-min", DFL_STREAK_COUNT_MIN);
|
||||||
|
streak_count_max = n->getIntValue(
|
||||||
|
"streak-count-max", DFL_STREAK_COUNT_MAX);
|
||||||
|
if (streak_count_max > MAX_RAIN_SLICE)
|
||||||
|
streak_count_max = MAX_RAIN_SLICE;
|
||||||
|
|
||||||
|
cone_base_radius = n->getFloatValue(
|
||||||
|
"cone-base-radius", DFL_CONE_BASE_RADIUS);
|
||||||
|
cone_height = n->getFloatValue("cone_height", DFL_CONE_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class to render lightnings.
|
||||||
|
*/
|
||||||
|
class SGLightning {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Build a new lightning.
|
||||||
|
* The lightning has a limited life time. It will also play a thunder sounder once.
|
||||||
|
* @param lon lon longitude in degree
|
||||||
|
* @param lat lat latitude in degree
|
||||||
|
* @param alt asl of top of lightning
|
||||||
|
*/
|
||||||
|
SGLightning(double lon, double lat, double alt);
|
||||||
|
~SGLightning();
|
||||||
|
void lt_Render(void);
|
||||||
|
void lt_build(void);
|
||||||
|
void lt_build_tree_branch(int tree_nr, Point3D &start, float energy, int nbseg, float segsize);
|
||||||
|
|
||||||
|
// contains all the segments of the lightning
|
||||||
|
lt_tree_seg lt_tree[MAX_LT_TREE_SEG];
|
||||||
|
// segment count
|
||||||
|
int nb_tree;
|
||||||
|
// position of lightning
|
||||||
|
double lon, lat, alt;
|
||||||
|
int sequence_count;
|
||||||
|
// time to live
|
||||||
|
double age;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef vector<SGLightning *> list_of_lightning;
|
||||||
|
static list_of_lightning lightnings;
|
||||||
|
|
||||||
|
SGEnviro sgEnviro;
|
||||||
|
|
||||||
|
SGEnviro::SGEnviro() :
|
||||||
|
view_in_cloud(false),
|
||||||
|
precipitation_enable_state(true),
|
||||||
|
precipitation_density(100.0),
|
||||||
|
precipitation_max_alt(0.0),
|
||||||
|
turbulence_enable_state(false),
|
||||||
|
last_cloud_turbulence(0.0),
|
||||||
|
cloud_turbulence(0.0),
|
||||||
|
lightning_enable_state(false),
|
||||||
|
elapsed_time(0.0),
|
||||||
|
dt(0.0),
|
||||||
|
soundMgr(NULL),
|
||||||
|
snd_active(false),
|
||||||
|
snd_dist(0.0),
|
||||||
|
min_time_before_lt(0.0),
|
||||||
|
fov_width(55.0),
|
||||||
|
fov_height(55.0)
|
||||||
|
|
||||||
|
{
|
||||||
|
for(int i = 0; i < MAX_RAIN_SLICE ; i++)
|
||||||
|
rainpos[i] = sg_random();
|
||||||
|
radarEcho.reserve(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
SGEnviro::~SGEnviro(void) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
list_of_lightning::iterator iLightning;
|
||||||
|
for( iLightning = lightnings.begin() ; iLightning != lightnings.end() ; iLightning++ ) {
|
||||||
|
delete (*iLightning);
|
||||||
|
}
|
||||||
|
lightnings.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::startOfFrame( sgVec3 p, sgVec3 up, double lon, double lat, double alt, double delta_time) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
view_in_cloud = false;
|
||||||
|
// ask the impostor cache to do some cleanup
|
||||||
|
if(SGNewCloud::cldCache)
|
||||||
|
SGNewCloud::cldCache->startNewFrame();
|
||||||
|
last_cloud_turbulence = cloud_turbulence;
|
||||||
|
cloud_turbulence = 0.0;
|
||||||
|
elapsed_time += delta_time;
|
||||||
|
min_time_before_lt -= delta_time;
|
||||||
|
dt = delta_time;
|
||||||
|
|
||||||
|
sgMat4 T1, LON, LAT;
|
||||||
|
sgVec3 axis;
|
||||||
|
|
||||||
|
sgMakeTransMat4( T1, p );
|
||||||
|
|
||||||
|
sgSetVec3( axis, 0.0, 0.0, 1.0 );
|
||||||
|
sgMakeRotMat4( LON, lon, axis );
|
||||||
|
|
||||||
|
sgSetVec3( axis, 0.0, 1.0, 0.0 );
|
||||||
|
sgMakeRotMat4( LAT, 90.0 - lat, axis );
|
||||||
|
|
||||||
|
sgMat4 TRANSFORM;
|
||||||
|
|
||||||
|
sgCopyMat4( TRANSFORM, T1 );
|
||||||
|
sgPreMultMat4( TRANSFORM, LON );
|
||||||
|
sgPreMultMat4( TRANSFORM, LAT );
|
||||||
|
|
||||||
|
sgCoord pos;
|
||||||
|
sgSetCoord( &pos, TRANSFORM );
|
||||||
|
|
||||||
|
sgMakeCoordMat4( transform, &pos );
|
||||||
|
last_lon = lon;
|
||||||
|
last_lat = lat;
|
||||||
|
last_alt = alt;
|
||||||
|
|
||||||
|
radarEcho.clear();
|
||||||
|
precipitation_max_alt = 400.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::endOfFrame(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
double SGEnviro::get_cloud_turbulence(void) const {
|
||||||
|
return last_cloud_turbulence;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this can be queried to add some turbulence for example
|
||||||
|
bool SGEnviro::is_view_in_cloud(void) const {
|
||||||
|
return view_in_cloud;
|
||||||
|
}
|
||||||
|
void SGEnviro::set_view_in_cloud(bool incloud) {
|
||||||
|
view_in_cloud = incloud;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SGEnviro::get_CacheResolution(void) const {
|
||||||
|
return SGCloudField::get_CacheResolution();
|
||||||
|
}
|
||||||
|
|
||||||
|
int SGEnviro::get_clouds_CacheSize(void) const {
|
||||||
|
return SGCloudField::get_CacheSize();
|
||||||
|
}
|
||||||
|
float SGEnviro::get_clouds_visibility(void) const {
|
||||||
|
return SGCloudField::get_CloudVis();
|
||||||
|
}
|
||||||
|
float SGEnviro::get_clouds_density(void) const {
|
||||||
|
return SGCloudField::get_density();
|
||||||
|
}
|
||||||
|
bool SGEnviro::get_clouds_enable_state(void) const {
|
||||||
|
return SGCloudField::get_enable3dClouds();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SGEnviro::get_turbulence_enable_state(void) const {
|
||||||
|
return turbulence_enable_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::set_CacheResolution(int resolutionPixels) {
|
||||||
|
SGCloudField::set_CacheResolution(resolutionPixels);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::set_clouds_CacheSize(int sizeKb) {
|
||||||
|
SGCloudField::set_CacheSize(sizeKb);
|
||||||
|
}
|
||||||
|
void SGEnviro::set_clouds_visibility(float distance) {
|
||||||
|
SGCloudField::set_CloudVis(distance);
|
||||||
|
}
|
||||||
|
void SGEnviro::set_clouds_density(float density) {
|
||||||
|
SGCloudField::set_density(density);
|
||||||
|
}
|
||||||
|
void SGEnviro::set_clouds_enable_state(bool enable) {
|
||||||
|
SGCloudField::set_enable3dClouds(enable);
|
||||||
|
}
|
||||||
|
void SGEnviro::set_turbulence_enable_state(bool enable) {
|
||||||
|
turbulence_enable_state = enable;
|
||||||
|
}
|
||||||
|
// rain/snow
|
||||||
|
float SGEnviro::get_precipitation_density(void) const {
|
||||||
|
return precipitation_density;
|
||||||
|
}
|
||||||
|
bool SGEnviro::get_precipitation_enable_state(void) const {
|
||||||
|
return precipitation_enable_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::set_precipitation_density(float density) {
|
||||||
|
precipitation_density = density;
|
||||||
|
}
|
||||||
|
void SGEnviro::set_precipitation_enable_state(bool enable) {
|
||||||
|
precipitation_enable_state = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
// others
|
||||||
|
bool SGEnviro::get_lightning_enable_state(void) const {
|
||||||
|
return lightning_enable_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::set_lightning_enable_state(bool enable) {
|
||||||
|
lightning_enable_state = enable;
|
||||||
|
if( ! enable ) {
|
||||||
|
// TODO:cleanup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::setLight(sgVec4 adj_fog_color) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
sgCopyVec4( fog_color, adj_fog_color );
|
||||||
|
if( false ) {
|
||||||
|
// ssgGetLight( 0 ) -> setColour( GL_DIFFUSE, l->scene_diffuse() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::callback_cloud(float bearing, float alt, float radius, int family, float dist, int cloudId) {
|
||||||
|
// send data to wx radar
|
||||||
|
// compute turbulence
|
||||||
|
// draw precipitation
|
||||||
|
// draw lightning
|
||||||
|
// compute illumination
|
||||||
|
|
||||||
|
// http://www.pilotfriend.com/flight_training/weather/THUNDERSTORM%20HAZARDS1.htm
|
||||||
|
double turbulence = 0.0;
|
||||||
|
if( dist < radius * radius * 2.25f ) {
|
||||||
|
switch(family) {
|
||||||
|
case SGNewCloud::CLFamilly_st:
|
||||||
|
turbulence = 0.2;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_ci:
|
||||||
|
case SGNewCloud::CLFamilly_cs:
|
||||||
|
case SGNewCloud::CLFamilly_cc:
|
||||||
|
case SGNewCloud::CLFamilly_ac:
|
||||||
|
case SGNewCloud::CLFamilly_as:
|
||||||
|
turbulence = 0.1;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_sc:
|
||||||
|
turbulence = 0.3;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_ns:
|
||||||
|
turbulence = 0.4;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_cu:
|
||||||
|
turbulence = 0.5;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_cb:
|
||||||
|
turbulence = 0.6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// full turbulence inside cloud, half in the vicinity
|
||||||
|
if( dist > radius * radius )
|
||||||
|
turbulence *= 0.5;
|
||||||
|
if( turbulence > cloud_turbulence )
|
||||||
|
cloud_turbulence = turbulence;
|
||||||
|
// we can do 'local' precipitations too
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert to LWC for radar (experimental)
|
||||||
|
// http://www-das.uwyo.edu/~geerts/cwx/notes/chap08/moist_cloud.html
|
||||||
|
double LWC = 0.0;
|
||||||
|
switch(family) {
|
||||||
|
case SGNewCloud::CLFamilly_st:
|
||||||
|
LWC = 0.29;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_cu:
|
||||||
|
LWC = 0.27;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_cb:
|
||||||
|
LWC = 2.0;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_sc:
|
||||||
|
LWC = 0.44;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_ci:
|
||||||
|
LWC = 0.03;
|
||||||
|
break;
|
||||||
|
// no data
|
||||||
|
case SGNewCloud::CLFamilly_cs:
|
||||||
|
case SGNewCloud::CLFamilly_cc:
|
||||||
|
case SGNewCloud::CLFamilly_ac:
|
||||||
|
case SGNewCloud::CLFamilly_as:
|
||||||
|
LWC = 0.03;
|
||||||
|
break;
|
||||||
|
case SGNewCloud::CLFamilly_ns:
|
||||||
|
LWC = 0.29*2.0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// add to the list for the wxRadar instrument
|
||||||
|
if( LWC > 0.0 )
|
||||||
|
radarEcho.push_back( SGWxRadarEcho ( bearing, alt, radius, dist, 0.0 , LWC, false, cloudId, false ) );
|
||||||
|
|
||||||
|
// NB:data valid only from cockpit view
|
||||||
|
|
||||||
|
// spawn a new lightning
|
||||||
|
if(lightning_enable_state && min_time_before_lt <= 0.0 && (family == SGNewCloud::CLFamilly_cb) &&
|
||||||
|
dist < 15000.0 * 15000.0 && sg_random() > 0.9f) {
|
||||||
|
double lat, lon;
|
||||||
|
Point3D orig, dest;
|
||||||
|
orig.setlat(last_lat * SG_DEGREES_TO_RADIANS );
|
||||||
|
orig.setlon(last_lon * SG_DEGREES_TO_RADIANS );
|
||||||
|
orig.setelev(0.0);
|
||||||
|
dist = sgSqrt(dist);
|
||||||
|
dest = calc_gc_lon_lat(orig, bearing, dist);
|
||||||
|
lon = dest.lon() * SG_RADIANS_TO_DEGREES;
|
||||||
|
lat = dest.lat() * SG_RADIANS_TO_DEGREES;
|
||||||
|
addLightning( lon, lat, alt );
|
||||||
|
|
||||||
|
// reset timer
|
||||||
|
min_time_before_lt = 5.0 + sg_random() * 30;
|
||||||
|
// DEBUG only
|
||||||
|
// min_time_before_lt = 5.0;
|
||||||
|
}
|
||||||
|
if( (alt - radius * 0.1) > precipitation_max_alt )
|
||||||
|
switch(family) {
|
||||||
|
case SGNewCloud::CLFamilly_st:
|
||||||
|
case SGNewCloud::CLFamilly_cu:
|
||||||
|
case SGNewCloud::CLFamilly_cb:
|
||||||
|
case SGNewCloud::CLFamilly_ns:
|
||||||
|
case SGNewCloud::CLFamilly_sc:
|
||||||
|
precipitation_max_alt = alt - radius * 0.1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list_of_SGWxRadarEcho *SGEnviro::get_radar_echo(void) {
|
||||||
|
return &radarEcho;
|
||||||
|
}
|
||||||
|
|
||||||
|
// precipitation rendering code
|
||||||
|
void SGEnviro::DrawCone2(float baseRadius, float height, int slices, bool down, double rain_norm, double speed) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
sgVec3 light;
|
||||||
|
sgAddVec3( light, fog_color, min_light );
|
||||||
|
float da = SG_PI * 2.0f / (float) slices;
|
||||||
|
// low number = faster
|
||||||
|
float speedf = streak_period_max - speed * streak_period_change_per_kt;
|
||||||
|
if( speedf < streak_period_min )
|
||||||
|
speedf = streak_period_min;
|
||||||
|
float lenf = streak_length_min + speed * streak_length_change_per_kt;
|
||||||
|
if( lenf > streak_length_max )
|
||||||
|
lenf = streak_length_max;
|
||||||
|
float t = fmod((float) elapsed_time, speedf) / speedf;
|
||||||
|
// t = 0.1f;
|
||||||
|
if( !down )
|
||||||
|
t = 1.0f - t;
|
||||||
|
float angle = 0.0f;
|
||||||
|
//glColor4f(1.0f, 0.7f, 0.7f, 0.9f); // XXX unneeded? overriden below
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
if (slices > MAX_RAIN_SLICE)
|
||||||
|
slices = MAX_RAIN_SLICE; // should never happen
|
||||||
|
for( int i = 0 ; i < slices ; i++ ) {
|
||||||
|
float x = cos(angle) * baseRadius;
|
||||||
|
float y = sin(angle) * baseRadius;
|
||||||
|
angle += da;
|
||||||
|
sgVec3 dir = {x, -height, y};
|
||||||
|
|
||||||
|
// rain drops at 2 different speed to simulate depth
|
||||||
|
float t1 = (i & 1 ? t : t + t) + rainpos[i];
|
||||||
|
if(t1 > 1.0f) t1 -= 1.0f;
|
||||||
|
if(t1 > 1.0f) t1 -= 1.0f;
|
||||||
|
|
||||||
|
// distant raindrops are more transparent
|
||||||
|
float c = t1 * (i & 1 ?
|
||||||
|
streak_bright_farmost_layer
|
||||||
|
: streak_bright_nearmost_layer);
|
||||||
|
glColor4f(c * light[0], c * light[1], c * light[2], c);
|
||||||
|
sgVec3 p1, p2;
|
||||||
|
sgScaleVec3(p1, dir, t1);
|
||||||
|
// distant raindrops are shorter
|
||||||
|
float t2 = t1 + (i & 1 ? lenf : lenf+lenf);
|
||||||
|
sgScaleVec3(p2, dir, t2);
|
||||||
|
|
||||||
|
glVertex3f(p1[0], p1[1] + height, p1[2]);
|
||||||
|
glVertex3f(p2[0], p2[1] + height, p2[2]);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::drawRain(double pitch, double roll, double heading, double hspeed, double rain_norm) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static int debug_period = 0;
|
||||||
|
if (debug_period++ == 50) {
|
||||||
|
debug_period = 0;
|
||||||
|
cout << "drawRain("
|
||||||
|
<< pitch << ", "
|
||||||
|
<< roll << ", "
|
||||||
|
<< heading << ", "
|
||||||
|
<< hspeed << ", "
|
||||||
|
<< rain_norm << ");"
|
||||||
|
//" angle = " << angle
|
||||||
|
//<< " raindrop(KTS) = " << raindrop_speed_kts
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
glShadeModel(GL_SMOOTH);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
|
glDisable( GL_FOG );
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
|
||||||
|
int slice_count = static_cast<int>(
|
||||||
|
(streak_count_min + rain_norm*(streak_count_max-streak_count_min))
|
||||||
|
* precipitation_density / 100.0);
|
||||||
|
|
||||||
|
// www.wonderquest.com/falling-raindrops.htm says that
|
||||||
|
// Raindrop terminal velocity is 5 to 20mph
|
||||||
|
// Rather than model it accurately (temp, pressure, diameter), and make it
|
||||||
|
// smaller than terminal when closer to the precipitation cloud base,
|
||||||
|
// we interpolate in the 5-20mph range according to rain_norm.
|
||||||
|
double raindrop_speed_kts
|
||||||
|
= (5.0 + rain_norm*15.0) * SG_MPH_TO_MPS * SG_MPS_TO_KT;
|
||||||
|
|
||||||
|
float angle = atanf(hspeed / raindrop_speed_kts) * SG_RADIANS_TO_DEGREES;
|
||||||
|
glPushMatrix();
|
||||||
|
// the cone rotate with hspeed
|
||||||
|
angle = -pitch - angle;
|
||||||
|
glRotatef(roll, 0.0, 0.0, 1.0);
|
||||||
|
glRotatef(heading, 0.0, 1.0, 0.0);
|
||||||
|
glRotatef(angle, 1.0, 0.0, 0.0);
|
||||||
|
|
||||||
|
// up cone
|
||||||
|
DrawCone2(cone_base_radius, cone_height,
|
||||||
|
slice_count, true, rain_norm, hspeed);
|
||||||
|
// down cone (usually not visible)
|
||||||
|
if(angle > 0.0 || heading != 0.0)
|
||||||
|
DrawCone2(cone_base_radius, -cone_height,
|
||||||
|
slice_count, false, rain_norm, hspeed);
|
||||||
|
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
|
||||||
|
glEnable( GL_FOG );
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::set_soundMgr(SGSoundMgr *mgr) {
|
||||||
|
soundMgr = mgr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::drawPrecipitation(double rain_norm, double snow_norm, double hail_norm, double pitch, double roll, double heading, double hspeed) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
if( precipitation_enable_state && rain_norm > 0.0)
|
||||||
|
if( precipitation_max_alt >= last_alt )
|
||||||
|
drawRain(pitch, roll, heading, hspeed, rain_norm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SGLightning::SGLightning(double _lon, double _lat, double _alt) :
|
||||||
|
nb_tree(0),
|
||||||
|
lon(_lon),
|
||||||
|
lat(_lat),
|
||||||
|
alt(_alt),
|
||||||
|
age(1.0 + sg_random() * 4.0)
|
||||||
|
{
|
||||||
|
// sequence_count = 1 + sg_random() * 5.0;
|
||||||
|
lt_build();
|
||||||
|
}
|
||||||
|
|
||||||
|
SGLightning::~SGLightning() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// lightning rendering code
|
||||||
|
void SGLightning::lt_build_tree_branch(int tree_nr, Point3D &start, float energy, int nbseg, float segsize) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
|
||||||
|
sgVec3 dir, newdir;
|
||||||
|
int nseg = 0;
|
||||||
|
Point3D pt = start;
|
||||||
|
if( nbseg == 50 )
|
||||||
|
sgSetVec3( dir, 0.0, -1.0, 0.0 );
|
||||||
|
else {
|
||||||
|
sgSetVec3( dir, sg_random() - 0.5f, sg_random() - 0.5f, sg_random() - 0.5f);
|
||||||
|
sgNormaliseVec3(dir);
|
||||||
|
}
|
||||||
|
if( nb_tree >= MAX_LT_TREE_SEG )
|
||||||
|
return;
|
||||||
|
|
||||||
|
lt_tree[nb_tree].depth = tree_nr;
|
||||||
|
nseg = 0;
|
||||||
|
lt_tree[nb_tree].pt = pt;
|
||||||
|
lt_tree[nb_tree].prev = -1;
|
||||||
|
nb_tree ++;
|
||||||
|
|
||||||
|
// TODO:check agl
|
||||||
|
while(nseg < nbseg && pt.y() > 0.0) {
|
||||||
|
int prev = nb_tree - 1;
|
||||||
|
nseg++;
|
||||||
|
// add a branch
|
||||||
|
if( energy * sg_random() > 0.8f )
|
||||||
|
lt_build_tree_branch(tree_nr + 1, pt, energy * 0.9f, nbseg == 50 ? 10 : static_cast<int>(nbseg * 0.4f), segsize * 0.7f);
|
||||||
|
|
||||||
|
if( nb_tree >= MAX_LT_TREE_SEG )
|
||||||
|
return;
|
||||||
|
sgSetVec3(newdir, (sg_random() - 0.5f), (sg_random() - 0.5f) - (nbseg == 50 ? 0.5f : 0.0), (sg_random() - 0.5f));
|
||||||
|
sgNormaliseVec3(newdir);
|
||||||
|
sgAddVec3( dir, newdir);
|
||||||
|
sgNormaliseVec3(dir);
|
||||||
|
sgVec3 scaleDir;
|
||||||
|
sgScaleVec3( scaleDir, dir, segsize * energy * 0.5f );
|
||||||
|
pt[PX] += scaleDir[0];
|
||||||
|
pt[PY] += scaleDir[1];
|
||||||
|
pt[PZ] += scaleDir[2];
|
||||||
|
|
||||||
|
lt_tree[nb_tree].depth = tree_nr;
|
||||||
|
lt_tree[nb_tree].pt = pt;
|
||||||
|
lt_tree[nb_tree].prev = prev;
|
||||||
|
nb_tree ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGLightning::lt_build(void) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
Point3D top;
|
||||||
|
nb_tree = 0;
|
||||||
|
top[PX] = 0 ;
|
||||||
|
top[PY] = alt;
|
||||||
|
top[PZ] = 0;
|
||||||
|
lt_build_tree_branch(0, top, 1.0, 50, top[PY] / 8.0);
|
||||||
|
if( ! sgEnviro.soundMgr )
|
||||||
|
return;
|
||||||
|
Point3D start( sgEnviro.last_lon*SG_DEGREES_TO_RADIANS, sgEnviro.last_lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
Point3D dest( lon*SG_DEGREES_TO_RADIANS, lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
double course = 0.0, dist = 0.0;
|
||||||
|
calc_gc_course_dist( dest, start, &course, &dist );
|
||||||
|
if( dist < 10000.0 && ! sgEnviro.snd_playing && (dist < sgEnviro.snd_dist || ! sgEnviro.snd_active) ) {
|
||||||
|
sgEnviro.snd_timer = 0.0;
|
||||||
|
sgEnviro.snd_wait = dist / 340;
|
||||||
|
sgEnviro.snd_dist = dist;
|
||||||
|
sgEnviro.snd_pos_lat = lat;
|
||||||
|
sgEnviro.snd_pos_lon = lon;
|
||||||
|
sgEnviro.snd_active = true;
|
||||||
|
sgEnviro.snd_playing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SGLightning::lt_Render(void) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
float flash = 0.5;
|
||||||
|
if( fmod(sgEnviro.elapsed_time*100.0, 100.0) > 50.0 )
|
||||||
|
flash = sg_random() * 0.75f + 0.25f;
|
||||||
|
float h = lt_tree[0].pt[PY];
|
||||||
|
sgVec4 col={0.62f, 0.83f, 1.0f, 1.0f};
|
||||||
|
sgVec4 c;
|
||||||
|
|
||||||
|
#define DRAW_SEG() \
|
||||||
|
{glColorMaterial(GL_FRONT, GL_EMISSION); \
|
||||||
|
glDisable(GL_LINE_SMOOTH); glBegin(GL_LINES); \
|
||||||
|
glColor4fv(c); \
|
||||||
|
glVertex3f(lt_tree[n].pt[PX], lt_tree[n].pt[PZ], lt_tree[n].pt[PY]); \
|
||||||
|
glVertex3f(lt_tree[lt_tree[n].prev].pt[PX], lt_tree[lt_tree[n].prev].pt[PZ], lt_tree[lt_tree[n].prev].pt[PY]); \
|
||||||
|
glEnd(); glEnable(GL_LINE_SMOOTH);}
|
||||||
|
|
||||||
|
glDepthMask( GL_FALSE );
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc( GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||||
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glDisable( GL_FOG );
|
||||||
|
glPushMatrix();
|
||||||
|
sgMat4 modelview, tmp;
|
||||||
|
// OSGFIXME
|
||||||
|
// ssgGetModelviewMatrix( modelview );
|
||||||
|
sgCopyMat4( tmp, sgEnviro.transform );
|
||||||
|
sgPostMultMat4( tmp, modelview );
|
||||||
|
// OSGFIXME
|
||||||
|
// ssgLoadModelviewMatrix( tmp );
|
||||||
|
|
||||||
|
Point3D start( sgEnviro.last_lon*SG_DEGREES_TO_RADIANS, sgEnviro.last_lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
Point3D dest( lon*SG_DEGREES_TO_RADIANS, lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
double course = 0.0, dist = 0.0;
|
||||||
|
calc_gc_course_dist( dest, start, &course, &dist );
|
||||||
|
double ax = 0.0, ay = 0.0;
|
||||||
|
ax = cos(course) * dist;
|
||||||
|
ay = sin(course) * dist;
|
||||||
|
|
||||||
|
glTranslatef( ax, ay, -sgEnviro.last_alt );
|
||||||
|
|
||||||
|
sgEnviro.radarEcho.push_back( SGWxRadarEcho ( course, 0.0, 0.0, dist, 0.0, age, true, 0, false ) );
|
||||||
|
|
||||||
|
for( int n = 0 ; n < nb_tree ; n++ ) {
|
||||||
|
if( lt_tree[n].prev < 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
float t1 = sgLerp(0.5, 1.0, lt_tree[n].pt[PY] / h);
|
||||||
|
t1 *= flash;
|
||||||
|
if( lt_tree[n].depth >= 2 ) {
|
||||||
|
glLineWidth(3);
|
||||||
|
sgScaleVec4(c, col, t1 * 0.6f);
|
||||||
|
DRAW_SEG();
|
||||||
|
} else {
|
||||||
|
if( lt_tree[n].depth == 0 ) {
|
||||||
|
glLineWidth(12);
|
||||||
|
sgScaleVec4(c, col, t1 * 0.5f);
|
||||||
|
DRAW_SEG();
|
||||||
|
|
||||||
|
glLineWidth(6);
|
||||||
|
sgScaleVec4(c, col, t1);
|
||||||
|
DRAW_SEG();
|
||||||
|
} else {
|
||||||
|
glLineWidth(6);
|
||||||
|
sgScaleVec4(c, col, t1 * 0.7f);
|
||||||
|
DRAW_SEG();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( lt_tree[n].depth == 0 )
|
||||||
|
glLineWidth(3);
|
||||||
|
else
|
||||||
|
glLineWidth(2);
|
||||||
|
|
||||||
|
sgSetVec4(c, t1, t1, t1, t1);
|
||||||
|
DRAW_SEG();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
glLineWidth(1);
|
||||||
|
glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
|
||||||
|
glPopMatrix();
|
||||||
|
glDepthMask( GL_TRUE );
|
||||||
|
glEnable( GL_FOG );
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::addLightning(double lon, double lat, double alt) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
if( lightnings.size() > 10)
|
||||||
|
return;
|
||||||
|
SGLightning *lt= new SGLightning(lon, lat, alt);
|
||||||
|
lightnings.push_back(lt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::drawLightning(void) {
|
||||||
|
// OSGFIXME
|
||||||
|
return;
|
||||||
|
list_of_lightning::iterator iLightning;
|
||||||
|
// play 'thunder' for lightning
|
||||||
|
if( snd_active )
|
||||||
|
if( !snd_playing ) {
|
||||||
|
// wait until sound has reached us
|
||||||
|
snd_timer += dt;
|
||||||
|
if( snd_timer >= snd_wait ) {
|
||||||
|
snd_playing = true;
|
||||||
|
// compute relative position of lightning
|
||||||
|
Point3D start( sgEnviro.last_lon*SG_DEGREES_TO_RADIANS, sgEnviro.last_lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
Point3D dest( snd_pos_lon*SG_DEGREES_TO_RADIANS, snd_pos_lat*SG_DEGREES_TO_RADIANS, 0.0 );
|
||||||
|
double course = 0.0, dist = 0.0;
|
||||||
|
calc_gc_course_dist( dest, start, &course, &dist );
|
||||||
|
double ax = 0.0, ay = 0.0;
|
||||||
|
ax = cos(course) * dist;
|
||||||
|
ay = sin(course) * dist;
|
||||||
|
SGSharedPtr<SGSoundSample> snd = soundMgr->find("thunder");
|
||||||
|
if( snd ) {
|
||||||
|
ALfloat pos[3]={ax, ay, -sgEnviro.last_alt };
|
||||||
|
snd->set_source_pos(pos);
|
||||||
|
snd->play_once();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if( !soundMgr->is_playing("thunder") ) {
|
||||||
|
snd_active = false;
|
||||||
|
snd_playing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ! lightning_enable_state )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for( iLightning = lightnings.begin() ; iLightning != lightnings.end() ; iLightning++ ) {
|
||||||
|
if( dt )
|
||||||
|
if( sg_random() > 0.95f )
|
||||||
|
(*iLightning)->lt_build();
|
||||||
|
(*iLightning)->lt_Render();
|
||||||
|
(*iLightning)->age -= dt;
|
||||||
|
if( (*iLightning)->age < 0.0 ) {
|
||||||
|
delete (*iLightning);
|
||||||
|
lightnings.erase( iLightning );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SGEnviro::setFOV( float w, float h ) {
|
||||||
|
fov_width = w;
|
||||||
|
fov_height = h;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGEnviro::getFOV( float &w, float &h ) {
|
||||||
|
w = fov_width;
|
||||||
|
h = fov_height;
|
||||||
|
}
|
||||||
@@ -0,0 +1,268 @@
|
|||||||
|
// Visual environment helper class
|
||||||
|
//
|
||||||
|
// Written by Harald JOHNSEN, started April 2005.
|
||||||
|
// Minor changes/additions by Vivian Meazza Apr- May 2007
|
||||||
|
//
|
||||||
|
// Ported to OSG by Tim Moore Jun 2007
|
||||||
|
//
|
||||||
|
// Copyright (C) 2005 Harald JOHNSEN - hjohnsen@evc.net
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful, but
|
||||||
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
#ifndef _VISUAL_ENVIRO_HXX
|
||||||
|
#define _VISUAL_ENVIRO_HXX
|
||||||
|
|
||||||
|
#include <plib/sg.h>
|
||||||
|
|
||||||
|
#include <simgear/compiler.h>
|
||||||
|
#include STL_STRING
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
SG_USING_STD(vector);
|
||||||
|
SG_USING_STD(string);
|
||||||
|
|
||||||
|
class SGLightning;
|
||||||
|
class SGSoundMgr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simulate some echo on a weather radar.
|
||||||
|
* Container class for the wx radar instrument.
|
||||||
|
*/
|
||||||
|
class SGWxRadarEcho {
|
||||||
|
public:
|
||||||
|
SGWxRadarEcho(float _bearing, float _alt, float _radius, float _dist, float _heading,
|
||||||
|
double _LWC, bool _lightning, int _cloudId, bool _aircraft) :
|
||||||
|
bearing (_bearing),
|
||||||
|
heading( _heading ),
|
||||||
|
alt ( _alt ),
|
||||||
|
radius ( _radius ),
|
||||||
|
dist ( _dist ),
|
||||||
|
LWC ( _LWC ),
|
||||||
|
lightning ( _lightning ),
|
||||||
|
aircraft ( _aircraft ),
|
||||||
|
cloudId ( _cloudId )
|
||||||
|
{}
|
||||||
|
|
||||||
|
/** the heading and bearing in radian are versus north */
|
||||||
|
float bearing, heading;
|
||||||
|
float alt, radius, dist;
|
||||||
|
|
||||||
|
/** reflectivity converted to liquid water content. */
|
||||||
|
double LWC;
|
||||||
|
|
||||||
|
/** if true then this data is for a lightning else it is for water echo. */
|
||||||
|
bool lightning;
|
||||||
|
|
||||||
|
/** if true then this data is for an aircraft */
|
||||||
|
bool aircraft;
|
||||||
|
|
||||||
|
/** Unique identifier of cloud */
|
||||||
|
int cloudId;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef vector<SGWxRadarEcho> list_of_SGWxRadarEcho;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visual environment helper class.
|
||||||
|
*/
|
||||||
|
class SGEnviro {
|
||||||
|
friend class SGLightning;
|
||||||
|
private:
|
||||||
|
void DrawCone2(float baseRadius, float height, int slices, bool down, double rain_norm, double speed);
|
||||||
|
void lt_update(void);
|
||||||
|
|
||||||
|
bool view_in_cloud;
|
||||||
|
bool precipitation_enable_state;
|
||||||
|
float precipitation_density;
|
||||||
|
float precipitation_max_alt;
|
||||||
|
bool turbulence_enable_state;
|
||||||
|
double last_cloud_turbulence, cloud_turbulence;
|
||||||
|
bool lightning_enable_state;
|
||||||
|
double elapsed_time, dt;
|
||||||
|
sgVec4 fog_color;
|
||||||
|
sgMat4 transform;
|
||||||
|
double last_lon, last_lat, last_alt;
|
||||||
|
SGSoundMgr *soundMgr;
|
||||||
|
bool snd_active, snd_playing;
|
||||||
|
double snd_timer, snd_wait, snd_pos_lat, snd_pos_lon, snd_dist;
|
||||||
|
double min_time_before_lt;
|
||||||
|
|
||||||
|
float fov_width, fov_height;
|
||||||
|
|
||||||
|
/** a list of all the radar echo. */
|
||||||
|
list_of_SGWxRadarEcho radarEcho;
|
||||||
|
static sgVec3 min_light;
|
||||||
|
static SGfloat streak_bright_nearmost_layer,
|
||||||
|
streak_bright_farmost_layer,
|
||||||
|
streak_period_max,
|
||||||
|
streak_period_change_per_kt,
|
||||||
|
streak_period_min,
|
||||||
|
streak_length_min,
|
||||||
|
streak_length_change_per_kt,
|
||||||
|
streak_length_max;
|
||||||
|
static int streak_count_min, streak_count_max;
|
||||||
|
static SGfloat cone_base_radius,
|
||||||
|
cone_height;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SGEnviro();
|
||||||
|
~SGEnviro();
|
||||||
|
|
||||||
|
/** Read the config from the precipitation rendering config properties.
|
||||||
|
* @param precip_rendering_cfgNode "/sim/rendering/precipitation" in fg
|
||||||
|
* Set from whatever info present in the
|
||||||
|
* subnodes passed, substituting hardwired defaults for missing fields.
|
||||||
|
* If NULL is given, do nothing.
|
||||||
|
*/
|
||||||
|
void config(const class SGPropertyNode* precip_rendering_cfgNode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forward a few states used for renderings.
|
||||||
|
*/
|
||||||
|
void startOfFrame( sgVec3 p, sgVec3 up, double lon, double lat, double alt, double delta_time);
|
||||||
|
|
||||||
|
void endOfFrame(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whenever a cloud is drawn we check his 'impact' on the environment.
|
||||||
|
* @param heading direction of cloud in radians
|
||||||
|
* @param alt asl of cloud in meters
|
||||||
|
* @param radius radius of cloud in meters
|
||||||
|
* @param family cloud family
|
||||||
|
* @param dist squared dist to cloud in meters
|
||||||
|
*/
|
||||||
|
void callback_cloud(float heading, float alt, float radius, int family, float dist, int cloudId);
|
||||||
|
|
||||||
|
void drawRain(double pitch, double roll, double heading, double hspeed, double rain_norm);
|
||||||
|
/**
|
||||||
|
* Draw rain or snow precipitation around the viewer.
|
||||||
|
* @param rain_norm rain normalized intensity given by metar class
|
||||||
|
* @param snow_norm snow normalized intensity given by metar class
|
||||||
|
* @param hail_norm hail normalized intensity given by metar class
|
||||||
|
* @param pitch pitch rotation of viewer
|
||||||
|
* @param roll roll rotation of viewer
|
||||||
|
* @param hspeed moving horizontal speed of viewer in kt
|
||||||
|
*/
|
||||||
|
void drawPrecipitation(double rain_norm, double snow_norm, double hail_norm,
|
||||||
|
double pitch, double roll, double heading, double hspeed);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw the lightnings spawned by cumulo nimbus.
|
||||||
|
*/
|
||||||
|
void drawLightning(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forward the fog color used by the rain rendering.
|
||||||
|
* @param adj_fog_color color of the fog
|
||||||
|
*/
|
||||||
|
void setLight(sgVec4 adj_fog_color);
|
||||||
|
|
||||||
|
// this can be queried to add some turbulence for example
|
||||||
|
bool is_view_in_cloud(void) const;
|
||||||
|
void set_view_in_cloud(bool incloud);
|
||||||
|
double get_cloud_turbulence(void) const;
|
||||||
|
|
||||||
|
// Clouds
|
||||||
|
// return the size of the memory pool used by texture impostors
|
||||||
|
int get_clouds_CacheSize(void) const;
|
||||||
|
int get_CacheResolution(void) const;
|
||||||
|
float get_clouds_visibility(void) const;
|
||||||
|
float get_clouds_density(void) const;
|
||||||
|
bool get_clouds_enable_state(void) const;
|
||||||
|
bool get_turbulence_enable_state(void) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the size of the impostor texture cache for 3D clouds.
|
||||||
|
* @param sizeKb size of the texture pool in Kb
|
||||||
|
*/
|
||||||
|
void set_clouds_CacheSize(int sizeKb);
|
||||||
|
/**
|
||||||
|
* Set the resolution of the impostor texture for 3D clouds.
|
||||||
|
* @param resolutionPixels size of each texture in pixels (64|128|256)
|
||||||
|
*/
|
||||||
|
void set_CacheResolution(int resolutionPixels);
|
||||||
|
/**
|
||||||
|
* Set the maximum range used when drawing clouds.
|
||||||
|
* Clouds are blended from totaly transparent at max range to totaly opaque around the viewer
|
||||||
|
* @param distance in meters
|
||||||
|
*/
|
||||||
|
void set_clouds_visibility(float distance);
|
||||||
|
/**
|
||||||
|
* Set the proportion of clouds that will be rendered to limit drop in FPS.
|
||||||
|
* @param density 0..100 no clouds drawn when density == 0, all are drawn when density == 100
|
||||||
|
*/
|
||||||
|
void set_clouds_density(float density);
|
||||||
|
/**
|
||||||
|
* Enable or disable the use of 3D clouds.
|
||||||
|
* @param enable when false we draw the 2D layers
|
||||||
|
*/
|
||||||
|
void set_clouds_enable_state(bool enable);
|
||||||
|
/**
|
||||||
|
* Enable or disable the use of proximity cloud turbulence.
|
||||||
|
* @param enable when true the turbulence is computed based on type of cloud around the AC
|
||||||
|
*/
|
||||||
|
void set_turbulence_enable_state(bool enable);
|
||||||
|
|
||||||
|
// rain/snow
|
||||||
|
float get_precipitation_density(void) const;
|
||||||
|
bool get_precipitation_enable_state(void) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrease the precipitation density to the given percentage.
|
||||||
|
* (Only show the given percentage of rain streaks etc.)
|
||||||
|
* Default precipitation density upon construction is 100.0.
|
||||||
|
* @param density 0.0 to 100.0
|
||||||
|
*/
|
||||||
|
void set_precipitation_density(float density);
|
||||||
|
/**
|
||||||
|
* Enable or disable the rendering of precipitation around the viewer.
|
||||||
|
* @param enable when true we will draw precipitation depending on metar data
|
||||||
|
*/
|
||||||
|
void set_precipitation_enable_state(bool enable);
|
||||||
|
|
||||||
|
// others
|
||||||
|
bool get_lightning_enable_state(void) const;
|
||||||
|
/**
|
||||||
|
* Enable or disable the rendering of lightning and the thunder sound.
|
||||||
|
* @param enable when true we will draw lightning spwaned by cumulonimbus
|
||||||
|
*/
|
||||||
|
void set_lightning_enable_state(bool enable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spawn a new lighning at specified lon/lat.
|
||||||
|
* @param lon position of the new lightning
|
||||||
|
* @param lat position of the new lightning
|
||||||
|
* @param alt asl of the starting point of the lightning in meters
|
||||||
|
*/
|
||||||
|
void addLightning(double lon, double lat, double alt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forward the sound manager instance to be able to play samples.
|
||||||
|
* @param mgr a running sound manager
|
||||||
|
*/
|
||||||
|
void set_soundMgr(SGSoundMgr *mgr);
|
||||||
|
|
||||||
|
void setFOV( float w, float h );
|
||||||
|
void getFOV( float &w, float &h );
|
||||||
|
|
||||||
|
list_of_SGWxRadarEcho *get_radar_echo(void);
|
||||||
|
|
||||||
|
sgMat4 *get_transform(void) { return &transform; }
|
||||||
|
};
|
||||||
|
|
||||||
|
extern SGEnviro sgEnviro;
|
||||||
|
|
||||||
|
#endif // _VISUAL_ENVIRO_HXX
|
||||||
@@ -4,7 +4,7 @@ lib_LIBRARIES = libsgephem.a
|
|||||||
|
|
||||||
include_HEADERS = \
|
include_HEADERS = \
|
||||||
celestialBody.hxx \
|
celestialBody.hxx \
|
||||||
ephemeris.hxx \
|
ephemeris.hxx \
|
||||||
jupiter.hxx \
|
jupiter.hxx \
|
||||||
mars.hxx \
|
mars.hxx \
|
||||||
mercury.hxx \
|
mercury.hxx \
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
//
|
//
|
||||||
// Written by Curtis Olson, started March 2000.
|
// Written by Curtis Olson, started March 2000.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -15,19 +15,23 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <simgear_config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "ephemeris.hxx"
|
#include "ephemeris.hxx"
|
||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
SGEphemeris::SGEphemeris( const string &path ) {
|
SGEphemeris::SGEphemeris( const std::string &path ) {
|
||||||
our_sun = new Star;
|
our_sun = new Star;
|
||||||
moon = new MoonPos;
|
moon = new MoonPos;
|
||||||
mercury = new Mercury;
|
mercury = new Mercury;
|
||||||
@@ -37,6 +41,9 @@ SGEphemeris::SGEphemeris( const string &path ) {
|
|||||||
saturn = new Saturn;
|
saturn = new Saturn;
|
||||||
uranus = new Uranus;
|
uranus = new Uranus;
|
||||||
neptune = new Neptune;
|
neptune = new Neptune;
|
||||||
|
nplanets = 7;
|
||||||
|
for ( int i = 0; i < nplanets; ++i )
|
||||||
|
planets[i] = SGVec3d::zeros();
|
||||||
stars = new SGStarData( SGPath(path) );
|
stars = new SGStarData( SGPath(path) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
// All the core code underneath this is written by Durk Talsma. See
|
// All the core code underneath this is written by Durk Talsma. See
|
||||||
// the headers of all the other individual files for details.
|
// the headers of all the other individual files for details.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -19,10 +19,9 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -30,8 +29,7 @@
|
|||||||
#ifndef _EPHEMERIS_HXX
|
#ifndef _EPHEMERIS_HXX
|
||||||
#define _EPHEMERIS_HXX
|
#define _EPHEMERIS_HXX
|
||||||
|
|
||||||
|
#include <string>
|
||||||
#include <plib/sg.h>
|
|
||||||
|
|
||||||
#include <simgear/ephemeris/star.hxx>
|
#include <simgear/ephemeris/star.hxx>
|
||||||
#include <simgear/ephemeris/moonpos.hxx>
|
#include <simgear/ephemeris/moonpos.hxx>
|
||||||
@@ -44,11 +42,14 @@
|
|||||||
#include <simgear/ephemeris/neptune.hxx>
|
#include <simgear/ephemeris/neptune.hxx>
|
||||||
#include <simgear/ephemeris/stardata.hxx>
|
#include <simgear/ephemeris/stardata.hxx>
|
||||||
|
|
||||||
|
#include <simgear/math/SGMath.hxx>
|
||||||
|
#include <simgear/misc/sg_path.hxx>
|
||||||
|
|
||||||
|
|
||||||
/** Ephemeris class
|
/** Ephemeris class
|
||||||
*
|
*
|
||||||
* Written by Durk Talsma <d.talsma@direct.a2000.nl> and Curtis Olson
|
* Written by Durk Talsma <d.talsma@direct.a2000.nl> and Curtis Olson
|
||||||
* <curt@flightgear.org>
|
* <http://www.flightgear.org/~curt>
|
||||||
*
|
*
|
||||||
* Introduction
|
* Introduction
|
||||||
*
|
*
|
||||||
@@ -84,7 +85,7 @@ class SGEphemeris {
|
|||||||
// planets[i][1] = Declination
|
// planets[i][1] = Declination
|
||||||
// planets[i][2] = Magnitude
|
// planets[i][2] = Magnitude
|
||||||
int nplanets;
|
int nplanets;
|
||||||
sgdVec3 planets[7];
|
SGVec3d planets[7];
|
||||||
|
|
||||||
SGStarData *stars;
|
SGStarData *stars;
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ public:
|
|||||||
* calling the constructor you need to provide a path pointing to
|
* calling the constructor you need to provide a path pointing to
|
||||||
* your star database file.
|
* your star database file.
|
||||||
* @param path path to your star database */
|
* @param path path to your star database */
|
||||||
SGEphemeris( const string &path );
|
SGEphemeris( const std::string &path );
|
||||||
|
|
||||||
/** Destructor */
|
/** Destructor */
|
||||||
~SGEphemeris( void );
|
~SGEphemeris( void );
|
||||||
@@ -156,7 +157,7 @@ public:
|
|||||||
* the second is the declination, and the third is the magnitude.
|
* the second is the declination, and the third is the magnitude.
|
||||||
* @return planets array
|
* @return planets array
|
||||||
*/
|
*/
|
||||||
inline sgdVec3 *getPlanets() { return planets; }
|
inline SGVec3d *getPlanets() { return planets; }
|
||||||
|
|
||||||
/** @return the numbers of defined stars. */
|
/** @return the numbers of defined stars. */
|
||||||
inline int getNumStars() const { return stars->getNumStars(); }
|
inline int getNumStars() const { return stars->getNumStars(); }
|
||||||
@@ -168,7 +169,7 @@ public:
|
|||||||
* third is the magnitude.
|
* third is the magnitude.
|
||||||
* @returns star array
|
* @returns star array
|
||||||
*/
|
*/
|
||||||
inline sgdVec3 *getStars() { return stars->getStars(); }
|
inline SGVec3d *getStars() { return stars->getStars(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -172,7 +171,7 @@ void MoonPos::updatePosition(double mjd, double lst, double lat, Star *ourSun)
|
|||||||
// SG_LOG( SG_GENERAL, SG_INFO, "rho = " << rho );
|
// SG_LOG( SG_GENERAL, SG_INFO, "rho = " << rho );
|
||||||
|
|
||||||
if (geoRa < 0)
|
if (geoRa < 0)
|
||||||
geoRa += (2*SGD_PI);
|
geoRa += SGD_2PI;
|
||||||
|
|
||||||
HA = lst - (3.8197186 * geoRa);
|
HA = lst - (3.8197186 * geoRa);
|
||||||
/* SG_LOG( SG_GENERAL, SG_INFO, "t->getLst() = " << t->getLst()
|
/* SG_LOG( SG_GENERAL, SG_INFO, "t->getLst() = " << t->getLst()
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -80,7 +79,7 @@ void Star::updatePosition(double mjd)
|
|||||||
double
|
double
|
||||||
actTime, eccAnom,
|
actTime, eccAnom,
|
||||||
xv, yv, v, r,
|
xv, yv, v, r,
|
||||||
xe, ye, ze, ecl;
|
xe, ecl;
|
||||||
|
|
||||||
updateOrbElements(mjd);
|
updateOrbElements(mjd);
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
@@ -35,6 +34,7 @@ class Star : public CelestialBody
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
double xs, ys; // the sun's rectangular geocentric coordinates
|
double xs, ys; // the sun's rectangular geocentric coordinates
|
||||||
|
double ye, ze; // the sun's rectangularequatorial rectangular geocentric coordinates
|
||||||
double distance; // the sun's distance to the earth
|
double distance; // the sun's distance to the earth
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -47,6 +47,8 @@ public:
|
|||||||
double getw();
|
double getw();
|
||||||
double getxs();
|
double getxs();
|
||||||
double getys();
|
double getys();
|
||||||
|
double getye();
|
||||||
|
double getze();
|
||||||
double getDistance();
|
double getDistance();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -71,6 +73,16 @@ inline double Star::getys()
|
|||||||
return ys;
|
return ys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline double Star::getye()
|
||||||
|
{
|
||||||
|
return ye;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double Star::getze()
|
||||||
|
{
|
||||||
|
return ze;
|
||||||
|
}
|
||||||
|
|
||||||
inline double Star::getDistance()
|
inline double Star::getDistance()
|
||||||
{
|
{
|
||||||
return distance;
|
return distance;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Written by Curtis Olson, started March 2000.
|
// Written by Curtis Olson, started March 2000.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -14,34 +14,30 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <simgear_config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <simgear/debug/logstream.hxx>
|
#include <simgear/debug/logstream.hxx>
|
||||||
|
#include <simgear/misc/sg_path.hxx>
|
||||||
#include <simgear/misc/sgstream.hxx>
|
#include <simgear/misc/sgstream.hxx>
|
||||||
|
|
||||||
#include "stardata.hxx"
|
#include "stardata.hxx"
|
||||||
|
|
||||||
#if defined (_MSC_VER) || defined (SG_HAVE_NATIVE_SGI_COMPILERS)
|
#if defined (_MSC_VER)
|
||||||
SG_USING_STD(getline);
|
SG_USING_STD(getline);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
SGStarData::SGStarData() :
|
SGStarData::SGStarData( const SGPath& path )
|
||||||
nstars(0)
|
|
||||||
{
|
{
|
||||||
}
|
load(path);
|
||||||
|
|
||||||
SGStarData::SGStarData( SGPath path ) :
|
|
||||||
nstars(0)
|
|
||||||
{
|
|
||||||
data_path = SGPath( path );
|
|
||||||
load();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -50,31 +46,28 @@ SGStarData::~SGStarData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SGStarData::load() {
|
bool SGStarData::load( const SGPath& path ) {
|
||||||
|
|
||||||
// -dw- avoid local data > 32k error by dynamic allocation of the
|
_stars.clear();
|
||||||
// array, problem for some compilers
|
|
||||||
stars = new sgdVec3[SG_MAX_STARS];
|
|
||||||
|
|
||||||
// build the full path name to the stars data base file
|
// build the full path name to the stars data base file
|
||||||
data_path.append( "stars" );
|
SGPath tmp = path;
|
||||||
SG_LOG( SG_ASTRO, SG_INFO, " Loading stars from " << data_path.str() );
|
tmp.append( "stars" );
|
||||||
|
SG_LOG( SG_ASTRO, SG_INFO, " Loading stars from " << tmp.str() );
|
||||||
|
|
||||||
sg_gzifstream in( data_path.str() );
|
sg_gzifstream in( tmp.str() );
|
||||||
if ( ! in.is_open() ) {
|
if ( ! in.is_open() ) {
|
||||||
SG_LOG( SG_ASTRO, SG_ALERT, "Cannot open star file: "
|
SG_LOG( SG_ASTRO, SG_ALERT, "Cannot open star file: "
|
||||||
<< data_path.str() );
|
<< tmp.str() );
|
||||||
exit(-1);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
double ra, dec, mag;
|
double ra, dec, mag;
|
||||||
char c;
|
char c;
|
||||||
string name;
|
string name;
|
||||||
|
|
||||||
nstars = 0;
|
|
||||||
|
|
||||||
// read in each line of the file
|
// read in each line of the file
|
||||||
while ( ! in.eof() && nstars < SG_MAX_STARS ) {
|
while ( ! in.eof() ) {
|
||||||
in >> skipcomment;
|
in >> skipcomment;
|
||||||
|
|
||||||
getline( in, name, ',' );
|
getline( in, name, ',' );
|
||||||
@@ -114,13 +107,10 @@ bool SGStarData::load() {
|
|||||||
in >> mag;
|
in >> mag;
|
||||||
|
|
||||||
// cout << " star data = " << ra << " " << dec << " " << mag << endl;
|
// cout << " star data = " << ra << " " << dec << " " << mag << endl;
|
||||||
|
_stars.push_back(SGVec3d(ra, dec, mag));
|
||||||
sgdSetVec3( stars[nstars], ra, dec, mag );
|
|
||||||
|
|
||||||
++nstars;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SG_LOG( SG_ASTRO, SG_INFO, " Loaded " << nstars << " stars" );
|
SG_LOG( SG_ASTRO, SG_INFO, " Loaded " << _stars.size() << " stars" );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Written by Curtis Olson, started March 2000.
|
// Written by Curtis Olson, started March 2000.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@@ -14,10 +14,9 @@
|
|||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
// Library General Public License for more details.
|
// Library General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Library General Public
|
// You should have received a copy of the GNU General Public License
|
||||||
// License along with this library; if not, write to the
|
// along with this program; if not, write to the Free Software
|
||||||
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
// Boston, MA 02111-1307, USA.
|
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -25,37 +24,28 @@
|
|||||||
#ifndef _SG_STARDATA_HXX
|
#ifndef _SG_STARDATA_HXX
|
||||||
#define _SG_STARDATA_HXX
|
#define _SG_STARDATA_HXX
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <simgear/math/SGMath.hxx>
|
||||||
|
|
||||||
#include <plib/sg.h>
|
class SGPath;
|
||||||
|
|
||||||
#include <simgear/misc/sg_path.hxx>
|
|
||||||
|
|
||||||
|
|
||||||
#define SG_MAX_STARS 850
|
|
||||||
|
|
||||||
|
|
||||||
class SGStarData {
|
class SGStarData {
|
||||||
|
|
||||||
int nstars;
|
|
||||||
sgdVec3 *stars;
|
|
||||||
|
|
||||||
SGPath data_path;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
SGStarData();
|
SGStarData( const SGPath& path );
|
||||||
SGStarData( SGPath path );
|
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~SGStarData();
|
~SGStarData();
|
||||||
|
|
||||||
// load the stars database
|
// load the stars database
|
||||||
bool load();
|
bool load( const SGPath& path );
|
||||||
|
|
||||||
// stars
|
// stars
|
||||||
inline int getNumStars() const { return nstars; }
|
inline int getNumStars() const { return _stars.size(); }
|
||||||
inline sgdVec3 *getStars() { return stars; }
|
inline SGVec3d *getStars() { return &(_stars[0]); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<SGVec3d> _stars;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* Library General Public License for more details.
|
* Library General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* You should have received a copy of the GNU General Public License
|
||||||
* License along with this library; if not, write to the
|
* along with this program; if not, write to the Free Software
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|||||||
+20
-20
@@ -22,12 +22,6 @@ libsgio_a_SOURCES = \
|
|||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)
|
INCLUDES = -I$(top_srcdir)
|
||||||
|
|
||||||
if IS_MINGW
|
|
||||||
NETWORK_LIB = -lwsock32
|
|
||||||
else
|
|
||||||
NETWORK_LIB =
|
|
||||||
endif
|
|
||||||
|
|
||||||
noinst_PROGRAMS = decode_binobj socktest lowtest tcp_server tcp_client
|
noinst_PROGRAMS = decode_binobj socktest lowtest tcp_server tcp_client
|
||||||
|
|
||||||
tcp_server_SOURCES = tcp_server.cxx
|
tcp_server_SOURCES = tcp_server.cxx
|
||||||
@@ -37,8 +31,9 @@ tcp_server_LDADD = \
|
|||||||
$(top_builddir)/simgear/debug/libsgdebug.a \
|
$(top_builddir)/simgear/debug/libsgdebug.a \
|
||||||
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
||||||
$(top_builddir)/simgear/misc/libsgmisc.a \
|
$(top_builddir)/simgear/misc/libsgmisc.a \
|
||||||
$(top_builddir)/simgear/xml/libsgxml.a \
|
-lplibnet -lplibul -lz \
|
||||||
-lplibnet -lplibul -lz $(NETWORK_LIB)
|
$(network_LIBS) \
|
||||||
|
$(base_LIBS)
|
||||||
|
|
||||||
tcp_client_SOURCES = tcp_client.cxx
|
tcp_client_SOURCES = tcp_client.cxx
|
||||||
|
|
||||||
@@ -47,30 +42,35 @@ tcp_client_LDADD = \
|
|||||||
$(top_builddir)/simgear/debug/libsgdebug.a \
|
$(top_builddir)/simgear/debug/libsgdebug.a \
|
||||||
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
||||||
$(top_builddir)/simgear/misc/libsgmisc.a \
|
$(top_builddir)/simgear/misc/libsgmisc.a \
|
||||||
$(top_builddir)/simgear/xml/libsgxml.a \
|
-lplibnet -lplibul -lz \
|
||||||
-lplibnet -lplibul -lz $(NETWORK_LIB)
|
$(network_LIBS) \
|
||||||
|
$(base_LIBS)
|
||||||
|
|
||||||
socktest_SOURCES = socktest.cxx
|
socktest_SOURCES = socktest.cxx
|
||||||
|
|
||||||
socktest_LDADD = \
|
socktest_LDADD = \
|
||||||
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
$(top_builddir)/simgear/io/libsgio.a \
|
||||||
$(top_builddir)/simgear/io/libsgio.a \
|
|
||||||
$(top_builddir)/simgear/debug/libsgdebug.a \
|
$(top_builddir)/simgear/debug/libsgdebug.a \
|
||||||
|
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
||||||
$(top_builddir)/simgear/misc/libsgmisc.a \
|
$(top_builddir)/simgear/misc/libsgmisc.a \
|
||||||
$(top_builddir)/simgear/xml/libsgxml.a \
|
-lplibnet -lplibul -lz \
|
||||||
-lplibnet -lplibul -lz $(NETWORK_LIB)
|
$(network_LIBS) \
|
||||||
|
$(base_LIBS)
|
||||||
|
|
||||||
lowtest_SOURCES = lowtest.cxx
|
lowtest_SOURCES = lowtest.cxx
|
||||||
|
|
||||||
lowtest_LDADD = \
|
lowtest_LDADD = \
|
||||||
$(top_builddir)/simgear/io/libsgio.a
|
$(top_builddir)/simgear/io/libsgio.a \
|
||||||
|
$(top_builddir)/simgear/debug/libsgdebug.a \
|
||||||
|
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
||||||
|
$(top_builddir)/simgear/misc/libsgmisc.a \
|
||||||
|
$(base_LIBS) -lz
|
||||||
|
|
||||||
decode_binobj_SOURCES = decode_binobj.cxx
|
decode_binobj_SOURCES = decode_binobj.cxx
|
||||||
|
|
||||||
decode_binobj_LDADD = \
|
decode_binobj_LDADD = \
|
||||||
$(top_builddir)/simgear/io/libsgio.a \
|
$(top_builddir)/simgear/io/libsgio.a \
|
||||||
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
$(top_builddir)/simgear/debug/libsgdebug.a \
|
||||||
$(top_builddir)/simgear/misc/libsgmisc.a \
|
$(top_builddir)/simgear/bucket/libsgbucket.a \
|
||||||
$(top_builddir)/simgear/debug/libsgdebug.a \
|
$(top_builddir)/simgear/misc/libsgmisc.a \
|
||||||
$(top_builddir)/simgear/xml/libsgxml.a \
|
$(base_LIBS) -lz
|
||||||
-lz
|
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <simgear_config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include STL_IOSTREAM
|
#include STL_IOSTREAM
|
||||||
|
|
||||||
#if !defined(SG_HAVE_NATIVE_SGI_COMPILERS)
|
#include "sg_binobj.hxx"
|
||||||
|
|
||||||
SG_USING_STD(cout);
|
SG_USING_STD(cout);
|
||||||
SG_USING_STD(endl);
|
SG_USING_STD(endl);
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "sg_binobj.hxx"
|
|
||||||
|
|
||||||
|
|
||||||
int main( int argc, char **argv ) {
|
int main( int argc, char **argv ) {
|
||||||
@@ -35,14 +37,14 @@ int main( int argc, char **argv ) {
|
|||||||
obj.get_gbs_radius());
|
obj.get_gbs_radius());
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
point_list nodes = obj.get_wgs84_nodes();
|
std::vector<SGVec3d> nodes = obj.get_wgs84_nodes();
|
||||||
cout << "# vertex list" << endl;
|
cout << "# vertex list" << endl;
|
||||||
for ( i = 0; i < (int)nodes.size(); ++i ) {
|
for ( i = 0; i < (int)nodes.size(); ++i ) {
|
||||||
printf("v %.5f %.5f %.5f\n", nodes[i].x(), nodes[i].y(), nodes[i].z() );
|
printf("v %.5f %.5f %.5f\n", nodes[i].x(), nodes[i].y(), nodes[i].z() );
|
||||||
}
|
}
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
point_list normals = obj.get_normals();
|
std::vector<SGVec3f> normals = obj.get_normals();
|
||||||
cout << "# vertex normal list" << endl;
|
cout << "# vertex normal list" << endl;
|
||||||
for ( i = 0; i < (int)normals.size(); ++i ) {
|
for ( i = 0; i < (int)normals.size(); ++i ) {
|
||||||
printf("vn %.5f %.5f %.5f\n",
|
printf("vn %.5f %.5f %.5f\n",
|
||||||
@@ -50,7 +52,7 @@ int main( int argc, char **argv ) {
|
|||||||
}
|
}
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
point_list texcoords = obj.get_texcoords();
|
std::vector<SGVec2f> texcoords = obj.get_texcoords();
|
||||||
cout << "# texture coordinate list" << endl;
|
cout << "# texture coordinate list" << endl;
|
||||||
for ( i = 0; i < (int)texcoords.size(); ++i ) {
|
for ( i = 0; i < (int)texcoords.size(); ++i ) {
|
||||||
printf("vt %.5f %.5f\n",
|
printf("vt %.5f %.5f\n",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Written by Curtis Olson, started November 1999.
|
// Written by Curtis Olson, started November 1999.
|
||||||
//
|
//
|
||||||
// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU General Public License as
|
// modify it under the terms of the GNU General Public License as
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program; if not, write to the Free Software
|
// along with this program; if not, write to the Free Software
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -70,3 +70,9 @@ int SGIOChannel::writestring( const char *str ) {
|
|||||||
bool SGIOChannel::close() {
|
bool SGIOChannel::close() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// dummy eof routine
|
||||||
|
bool SGIOChannel::eof() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
// Written by Curtis Olson, started November 1999.
|
// Written by Curtis Olson, started November 1999.
|
||||||
//
|
//
|
||||||
// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
|
// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or
|
// This program is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU General Public License as
|
// modify it under the terms of the GNU General Public License as
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program; if not, write to the Free Software
|
// along with this program; if not, write to the Free Software
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -152,6 +152,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual bool close();
|
virtual bool close();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The eof() method returns true if end of file has been reached
|
||||||
|
* in a context where that makes sense. Otherwise it returns
|
||||||
|
* false.
|
||||||
|
* @return result of eof check
|
||||||
|
*/
|
||||||
|
virtual bool eof();
|
||||||
|
|
||||||
inline void set_type( SGChannelType t ) { type = t; }
|
inline void set_type( SGChannelType t ) { type = t; }
|
||||||
inline SGChannelType get_type() const { return type; }
|
inline SGChannelType get_type() const { return type; }
|
||||||
|
|
||||||
|
|||||||
+40
-40
@@ -4,7 +4,7 @@
|
|||||||
// Shamelessly adapted from plib (plib.sourceforge.net) January 2001
|
// Shamelessly adapted from plib (plib.sourceforge.net) January 2001
|
||||||
//
|
//
|
||||||
// Original version Copyright (C) 2000 the plib team
|
// Original version Copyright (C) 2000 the plib team
|
||||||
// Local changes Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Local changes Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program; if not, write to the Free Software
|
// along with this program; if not, write to the Free Software
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ void sgReadFloat ( gzFile fd, float *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)var);
|
sgEndianSwap( (uint32_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ void sgReadFloat ( gzFile fd, float *var )
|
|||||||
void sgWriteFloat ( gzFile fd, const float var )
|
void sgWriteFloat ( gzFile fd, const float var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)&var);
|
sgEndianSwap( (uint32_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(float) ) != sizeof(float) ) {
|
if ( gzwrite ( fd, (void *)(&var), sizeof(float) ) != sizeof(float) ) {
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
@@ -81,7 +81,7 @@ void sgReadDouble ( gzFile fd, double *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (uint64*)var);
|
sgEndianSwap( (uint64_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ void sgReadDouble ( gzFile fd, double *var )
|
|||||||
void sgWriteDouble ( gzFile fd, const double var )
|
void sgWriteDouble ( gzFile fd, const double var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (uint64*)&var);
|
sgEndianSwap( (uint64_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(double) ) != sizeof(double) ) {
|
if ( gzwrite ( fd, (void *)(&var), sizeof(double) ) != sizeof(double) ) {
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
@@ -103,7 +103,7 @@ void sgReadUInt ( gzFile fd, unsigned int *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)var);
|
sgEndianSwap( (uint32_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ void sgReadUInt ( gzFile fd, unsigned int *var )
|
|||||||
void sgWriteUInt ( gzFile fd, const unsigned int var )
|
void sgWriteUInt ( gzFile fd, const unsigned int var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)&var);
|
sgEndianSwap( (uint32_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(unsigned int) )
|
if ( gzwrite ( fd, (void *)(&var), sizeof(unsigned int) )
|
||||||
!= sizeof(unsigned int) )
|
!= sizeof(unsigned int) )
|
||||||
@@ -127,7 +127,7 @@ void sgReadInt ( gzFile fd, int *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)var);
|
sgEndianSwap( (uint32_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ void sgReadInt ( gzFile fd, int *var )
|
|||||||
void sgWriteInt ( gzFile fd, const int var )
|
void sgWriteInt ( gzFile fd, const int var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)&var);
|
sgEndianSwap( (uint32_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(int) ) != sizeof(int) ) {
|
if ( gzwrite ( fd, (void *)(&var), sizeof(int) ) != sizeof(int) ) {
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
@@ -143,48 +143,48 @@ void sgWriteInt ( gzFile fd, const int var )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sgReadLong ( gzFile fd, long int *var )
|
void sgReadLong ( gzFile fd, int32_t *var )
|
||||||
{
|
{
|
||||||
if ( gzread ( fd, var, sizeof(long int) ) != sizeof(long int) ) {
|
if ( gzread ( fd, var, sizeof(int32_t) ) != sizeof(int32_t) ) {
|
||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)var);
|
sgEndianSwap( (uint32_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sgWriteLong ( gzFile fd, const long int var )
|
void sgWriteLong ( gzFile fd, const int32_t var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned int*)&var);
|
sgEndianSwap( (uint32_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(long int) )
|
if ( gzwrite ( fd, (void *)(&var), sizeof(int32_t) )
|
||||||
!= sizeof(long int) )
|
!= sizeof(int32_t) )
|
||||||
{
|
{
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sgReadLongLong ( gzFile fd, int64 *var )
|
void sgReadLongLong ( gzFile fd, int64_t *var )
|
||||||
{
|
{
|
||||||
if ( gzread ( fd, var, sizeof(int64) ) != sizeof(int64) ) {
|
if ( gzread ( fd, var, sizeof(int64_t) ) != sizeof(int64_t) ) {
|
||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (uint64*)var);
|
sgEndianSwap( (uint64_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sgWriteLongLong ( gzFile fd, const int64 var )
|
void sgWriteLongLong ( gzFile fd, const int64_t var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (uint64*)&var);
|
sgEndianSwap( (uint64_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(int64) )
|
if ( gzwrite ( fd, (void *)(&var), sizeof(int64_t) )
|
||||||
!= sizeof(int64) )
|
!= sizeof(int64_t) )
|
||||||
{
|
{
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
}
|
}
|
||||||
@@ -197,7 +197,7 @@ void sgReadUShort ( gzFile fd, unsigned short *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned short int*)var);
|
sgEndianSwap( (uint16_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ void sgReadUShort ( gzFile fd, unsigned short *var )
|
|||||||
void sgWriteUShort ( gzFile fd, const unsigned short var )
|
void sgWriteUShort ( gzFile fd, const unsigned short var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned short*)&var);
|
sgEndianSwap( (uint16_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(unsigned short) )
|
if ( gzwrite ( fd, (void *)(&var), sizeof(unsigned short) )
|
||||||
!= sizeof(unsigned short) )
|
!= sizeof(unsigned short) )
|
||||||
@@ -221,7 +221,7 @@ void sgReadShort ( gzFile fd, short *var )
|
|||||||
read_error = true ;
|
read_error = true ;
|
||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned short int*)var);
|
sgEndianSwap( (uint16_t *)var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ void sgReadShort ( gzFile fd, short *var )
|
|||||||
void sgWriteShort ( gzFile fd, const short var )
|
void sgWriteShort ( gzFile fd, const short var )
|
||||||
{
|
{
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
sgEndianSwap( (unsigned short*)&var);
|
sgEndianSwap( (uint16_t *)&var);
|
||||||
}
|
}
|
||||||
if ( gzwrite ( fd, (void *)(&var), sizeof(short) ) != sizeof(short) ) {
|
if ( gzwrite ( fd, (void *)(&var), sizeof(short) ) != sizeof(short) ) {
|
||||||
write_error = true ;
|
write_error = true ;
|
||||||
@@ -244,7 +244,7 @@ void sgReadFloat ( gzFile fd, const unsigned int n, float *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)var++);
|
sgEndianSwap( (uint32_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -257,7 +257,7 @@ void sgWriteFloat ( gzFile fd, const unsigned int n, const float *var )
|
|||||||
float *ptr = swab;
|
float *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(float) * n );
|
memcpy( swab, var, sizeof(float) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)ptr++);
|
sgEndianSwap( (uint32_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
@@ -275,7 +275,7 @@ void sgReadDouble ( gzFile fd, const unsigned int n, double *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (uint64*)var++);
|
sgEndianSwap( (uint64_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,7 +288,7 @@ void sgWriteDouble ( gzFile fd, const unsigned int n, const double *var )
|
|||||||
double *ptr = swab;
|
double *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(double) * n );
|
memcpy( swab, var, sizeof(double) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (uint64*)ptr++);
|
sgEndianSwap( (uint64_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
@@ -325,7 +325,7 @@ void sgReadUShort ( gzFile fd, const unsigned int n, unsigned short *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned short int*)var++);
|
sgEndianSwap( (uint16_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ void sgWriteUShort ( gzFile fd, const unsigned int n, const unsigned short *var
|
|||||||
unsigned short *ptr = swab;
|
unsigned short *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(unsigned short) * n );
|
memcpy( swab, var, sizeof(unsigned short) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned short*)ptr++);
|
sgEndianSwap( (uint16_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
@@ -360,7 +360,7 @@ void sgReadShort ( gzFile fd, const unsigned int n, short *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned short int*)var++);
|
sgEndianSwap( (uint16_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -373,7 +373,7 @@ void sgWriteShort ( gzFile fd, const unsigned int n, const short *var )
|
|||||||
short *ptr = swab;
|
short *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(short) * n );
|
memcpy( swab, var, sizeof(short) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned short*)ptr++);
|
sgEndianSwap( (uint16_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
@@ -394,7 +394,7 @@ void sgReadUInt ( gzFile fd, const unsigned int n, unsigned int *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)var++);
|
sgEndianSwap( (uint32_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -407,7 +407,7 @@ void sgWriteUInt ( gzFile fd, const unsigned int n, const unsigned int *var )
|
|||||||
unsigned int *ptr = swab;
|
unsigned int *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(unsigned int) * n );
|
memcpy( swab, var, sizeof(unsigned int) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)ptr++);
|
sgEndianSwap( (uint32_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
@@ -429,7 +429,7 @@ void sgReadInt ( gzFile fd, const unsigned int n, int *var )
|
|||||||
}
|
}
|
||||||
if ( sgIsBigEndian() ) {
|
if ( sgIsBigEndian() ) {
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)var++);
|
sgEndianSwap( (uint32_t *)var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -442,7 +442,7 @@ void sgWriteInt ( gzFile fd, const unsigned int n, const int *var )
|
|||||||
int *ptr = swab;
|
int *ptr = swab;
|
||||||
memcpy( swab, var, sizeof(int) * n );
|
memcpy( swab, var, sizeof(int) * n );
|
||||||
for ( unsigned int i = 0; i < n; ++i ) {
|
for ( unsigned int i = 0; i < n; ++i ) {
|
||||||
sgEndianSwap( (unsigned int*)ptr++);
|
sgEndianSwap( (uint32_t *)ptr++);
|
||||||
}
|
}
|
||||||
var = swab;
|
var = swab;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-62
@@ -4,7 +4,7 @@
|
|||||||
// Shamelessly adapted from plib January 2001
|
// Shamelessly adapted from plib January 2001
|
||||||
//
|
//
|
||||||
// Original version Copyright (C) 2000 the plib team
|
// Original version Copyright (C) 2000 the plib team
|
||||||
// Local changes Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
|
// Local changes Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program; if not, write to the Free Software
|
// along with this program; if not, write to the Free Software
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
//
|
//
|
||||||
@@ -27,19 +27,13 @@
|
|||||||
#ifndef _SG_LOWLEVEL_HXX
|
#ifndef _SG_LOWLEVEL_HXX
|
||||||
#define _SG_LOWLEVEL_HXX
|
#define _SG_LOWLEVEL_HXX
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
||||||
#include <plib/sg.h>
|
#include <plib/sg.h>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#include <simgear/compiler.h>
|
||||||
typedef __int64 int64;
|
#include <simgear/misc/stdint.hxx>
|
||||||
typedef __int64 uint64;
|
|
||||||
#else
|
|
||||||
typedef long long int64;
|
|
||||||
typedef unsigned long long uint64;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Note that output is written in little endian form (and converted as
|
// Note that output is written in little endian form (and converted as
|
||||||
// necessary for big endian machines)
|
// necessary for big endian machines)
|
||||||
@@ -54,10 +48,10 @@ void sgReadUInt ( gzFile fd, unsigned int *var ) ;
|
|||||||
void sgWriteUInt ( gzFile fd, const unsigned int var ) ;
|
void sgWriteUInt ( gzFile fd, const unsigned int var ) ;
|
||||||
void sgReadInt ( gzFile fd, int *var ) ;
|
void sgReadInt ( gzFile fd, int *var ) ;
|
||||||
void sgWriteInt ( gzFile fd, const int var ) ;
|
void sgWriteInt ( gzFile fd, const int var ) ;
|
||||||
void sgReadLong ( gzFile fd, long int *var ) ;
|
void sgReadLong ( gzFile fd, int32_t *var ) ;
|
||||||
void sgWriteLong ( gzFile fd, const long int var ) ;
|
void sgWriteLong ( gzFile fd, const int32_t var ) ;
|
||||||
void sgReadLongLong ( gzFile fd, int64 *var ) ;
|
void sgReadLongLong ( gzFile fd, int64_t *var ) ;
|
||||||
void sgWriteLongLong ( gzFile fd, const int64 var ) ;
|
void sgWriteLongLong ( gzFile fd, const int64_t var ) ;
|
||||||
void sgReadUShort ( gzFile fd, unsigned short *var ) ;
|
void sgReadUShort ( gzFile fd, unsigned short *var ) ;
|
||||||
void sgWriteUShort ( gzFile fd, const unsigned short var ) ;
|
void sgWriteUShort ( gzFile fd, const unsigned short var ) ;
|
||||||
void sgReadShort ( gzFile fd, short *var ) ;
|
void sgReadShort ( gzFile fd, short *var ) ;
|
||||||
@@ -121,52 +115,4 @@ void sgClearWriteError();
|
|||||||
int sgReadError();
|
int sgReadError();
|
||||||
int sgWriteError();
|
int sgWriteError();
|
||||||
|
|
||||||
inline bool sgIsLittleEndian() {
|
|
||||||
static const int sgEndianTest = 1;
|
|
||||||
return (*((char *) &sgEndianTest ) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool sgIsBigEndian() {
|
|
||||||
static const int sgEndianTest = 1;
|
|
||||||
return (*((char *) &sgEndianTest ) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void sgEndianSwap(unsigned short *x) {
|
|
||||||
*x =
|
|
||||||
(( *x >> 8 ) & 0x00FF ) |
|
|
||||||
(( *x << 8 ) & 0xFF00 ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void sgEndianSwap(unsigned int *x) {
|
|
||||||
*x =
|
|
||||||
(( *x >> 24 ) & 0x000000FF ) |
|
|
||||||
(( *x >> 8 ) & 0x0000FF00 ) |
|
|
||||||
(( *x << 8 ) & 0x00FF0000 ) |
|
|
||||||
(( *x << 24 ) & 0xFF000000 ) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void sgEndianSwap(uint64 *x) {
|
|
||||||
#ifndef _MSC_VER
|
|
||||||
*x =
|
|
||||||
(( *x >> 56 ) & 0x00000000000000FFULL ) |
|
|
||||||
(( *x >> 40 ) & 0x000000000000FF00ULL ) |
|
|
||||||
(( *x >> 24 ) & 0x0000000000FF0000ULL ) |
|
|
||||||
(( *x >> 8 ) & 0x00000000FF000000ULL ) |
|
|
||||||
(( *x << 8 ) & 0x000000FF00000000ULL ) |
|
|
||||||
(( *x << 24 ) & 0x0000FF0000000000ULL ) |
|
|
||||||
(( *x << 40 ) & 0x00FF000000000000ULL ) |
|
|
||||||
(( *x << 56 ) & 0xFF00000000000000ULL ) ;
|
|
||||||
#else
|
|
||||||
*x =
|
|
||||||
(( *x >> 56 ) & 0x00000000000000FF ) |
|
|
||||||
(( *x >> 40 ) & 0x000000000000FF00 ) |
|
|
||||||
(( *x >> 24 ) & 0x0000000000FF0000 ) |
|
|
||||||
(( *x >> 8 ) & 0x00000000FF000000 ) |
|
|
||||||
(( *x << 8 ) & 0x000000FF00000000 ) |
|
|
||||||
(( *x << 24 ) & 0x0000FF0000000000 ) |
|
|
||||||
(( *x << 40 ) & 0x00FF000000000000 ) |
|
|
||||||
(( *x << 56 ) & 0xFF00000000000000 ) ;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // _SG_LOWLEVEL_HXX
|
#endif // _SG_LOWLEVEL_HXX
|
||||||
|
|||||||
+9
-11
@@ -3,16 +3,14 @@
|
|||||||
#include STL_IOSTREAM
|
#include STL_IOSTREAM
|
||||||
#include "lowlevel.hxx"
|
#include "lowlevel.hxx"
|
||||||
|
|
||||||
#if !defined(SG_HAVE_NATIVE_SGI_COMPILERS)
|
|
||||||
SG_USING_STD(cout);
|
|
||||||
SG_USING_STD(endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static const int sgEndianTest = 1;
|
static const int sgEndianTest = 1;
|
||||||
#define sgIsLittleEndian (*((char *) &sgEndianTest ) != 0)
|
#define sgIsLittleEndian (*((char *) &sgEndianTest ) != 0)
|
||||||
#define sgIsBigEndian (*((char *) &sgEndianTest ) == 0)
|
#define sgIsBigEndian (*((char *) &sgEndianTest ) == 0)
|
||||||
|
|
||||||
|
SG_USING_STD(cout);
|
||||||
|
SG_USING_STD(endl);
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
cout << "This machine is ";
|
cout << "This machine is ";
|
||||||
@@ -27,22 +25,22 @@ int main() {
|
|||||||
|
|
||||||
short s = 1111;
|
short s = 1111;
|
||||||
cout << "short s = " << s << endl;
|
cout << "short s = " << s << endl;
|
||||||
sgEndianSwap((unsigned short *)&s);
|
sgEndianSwap((uint16_t *)&s);
|
||||||
cout << "short s = " << s << endl;
|
cout << "short s = " << s << endl;
|
||||||
sgEndianSwap((unsigned short *)&s);
|
sgEndianSwap((uint16_t *)&s);
|
||||||
cout << "short s = " << s << endl;
|
cout << "short s = " << s << endl;
|
||||||
|
|
||||||
int i = 1111111;
|
int i = 1111111;
|
||||||
cout << "int i = " << i << endl;
|
cout << "int i = " << i << endl;
|
||||||
sgEndianSwap((unsigned int *)&i);
|
sgEndianSwap((uint32_t *)&i);
|
||||||
cout << "int i = " << i << endl;
|
cout << "int i = " << i << endl;
|
||||||
sgEndianSwap((unsigned int *)&i);
|
sgEndianSwap((uint32_t *)&i);
|
||||||
cout << "int i = " << i << endl;
|
cout << "int i = " << i << endl;
|
||||||
|
|
||||||
double x = 1111111111;
|
double x = 1111111111;
|
||||||
cout << "double x = " << x << endl;
|
cout << "double x = " << x << endl;
|
||||||
sgEndianSwap((unsigned long long *)&x);
|
sgEndianSwap((uint64_t *)&x);
|
||||||
cout << "double x = " << x << endl;
|
cout << "double x = " << x << endl;
|
||||||
sgEndianSwap((unsigned long long *)&x);
|
sgEndianSwap((uint64_t *)&x);
|
||||||
cout << "double x = " << x << endl;
|
cout << "double x = " << x << endl;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user