Compare commits
365 Commits
main/gingo
...
feature/op
Author | SHA1 | Date |
---|---|---|
kaetemi | 440e062fb0 | 4 years ago |
kaetemi | 15880d8d60 | 5 years ago |
kaetemi | 341e6b7173 | 5 years ago |
kaetemi | c065ce5919 | 5 years ago |
kaetemi | a537e8c8a8 | 5 years ago |
kaetemi | bbecb833b3 | 9 years ago |
kaetemi | 35d1e1e9d5 | 10 years ago |
kaetemi | 4fd44d89a9 | 10 years ago |
kaetemi | aab0e3b0d4 | 10 years ago |
kaetemi | 25994fd86b | 10 years ago |
kaetemi | 6ba039c329 | 10 years ago |
kaetemi | 94bd3b66bb | 10 years ago |
kaetemi | 66b94d93bf | 10 years ago |
kaetemi | 22f6ba78ac | 10 years ago |
kaetemi | 52214f221d | 10 years ago |
kaetemi | 4f5f779a92 | 10 years ago |
kaetemi | 6ea037e48d | 10 years ago |
kaetemi | 660e72e756 | 10 years ago |
kaetemi | be428c4901 | 10 years ago |
kaetemi | 9e00340a0d | 10 years ago |
kaetemi | 65a2f9dad7 | 10 years ago |
kaetemi | 5ef419bce3 | 10 years ago |
kaetemi | 8bdb4e577b | 10 years ago |
kaetemi | 631d91b40a | 10 years ago |
kaetemi | 642ae4208e | 10 years ago |
kaetemi | a2f5ed0037 | 10 years ago |
kaetemi | 3a2f04bfb5 | 10 years ago |
kaetemi | 5b59e6ba95 | 10 years ago |
kaetemi | 916683ed2a | 10 years ago |
kaetemi | 018417437e | 10 years ago |
kaetemi | 0299519116 | 10 years ago |
kaetemi | f1f2e6fa1d | 10 years ago |
kaetemi | ee98cf6709 | 10 years ago |
kaetemi | 161086bd56 | 10 years ago |
kaetemi | 3db0105185 | 10 years ago |
kaetemi | 66126429c2 | 11 years ago |
kaetemi | 6a207ffd76 | 11 years ago |
kaetemi | c9e8fb94c8 | 11 years ago |
kaetemi | 55aae0d138 | 11 years ago |
kaetemi | 5bc87eeeed | 11 years ago |
kaetemi | afea49e83d | 11 years ago |
kaetemi | 42936097ce | 11 years ago |
kaetemi | aab353672c | 11 years ago |
kaetemi | 50dea16ee7 | 11 years ago |
kaetemi | f860d46543 | 11 years ago |
kaetemi | 0a9135a511 | 11 years ago |
kaetemi | 1896876b11 | 11 years ago |
kaetemi | b5b0ec45ca | 11 years ago |
kaetemi | 85542abbfe | 11 years ago |
kaetemi | 76cacae628 | 11 years ago |
kaetemi | 60851a863e | 11 years ago |
kaetemi | 636b93a7b5 | 11 years ago |
kaetemi | 0543548272 | 11 years ago |
kaetemi | 984b899287 | 11 years ago |
kaetemi | f3766f9c40 | 11 years ago |
kaetemi | fef2365b5d | 11 years ago |
kaetemi | f799bdb650 | 11 years ago |
kaetemi | 516a56acd8 | 11 years ago |
kaetemi | b6ac857074 | 11 years ago |
kaetemi | 46ac4541f9 | 11 years ago |
kaetemi | 9b48fb0c5a | 11 years ago |
kaetemi | 835e0846a1 | 11 years ago |
kaetemi | 457f794584 | 11 years ago |
kaetemi | a0796d23de | 11 years ago |
kaetemi | 96d4a17340 | 11 years ago |
kaetemi | 5d542ed91e | 11 years ago |
kaetemi | 393d08532a | 11 years ago |
kaetemi | cda664c62a | 11 years ago |
kaetemi | 181db9adb9 | 11 years ago |
kaetemi | 9df1935f5e | 11 years ago |
kaetemi | a37d7a3127 | 11 years ago |
kaetemi | 9dbdcd1d4e | 11 years ago |
kaetemi | b372f203ec | 11 years ago |
kaetemi | cb3f3b72c5 | 11 years ago |
kaetemi | 07f663a68e | 11 years ago |
kaetemi | 5a4dd538f1 | 11 years ago |
kaetemi | 09db5b352c | 11 years ago |
kaetemi | 007d8877b8 | 11 years ago |
kaetemi | f347172bbe | 11 years ago |
kaetemi | 44102b2034 | 11 years ago |
kaetemi | 7e565518ec | 11 years ago |
kaetemi | 07269aea3e | 11 years ago |
kaetemi | ec190696ad | 11 years ago |
kaetemi | 4913e7dc94 | 11 years ago |
kaetemi | 4b4ac31a3d | 11 years ago |
kaetemi | 267e7397c5 | 11 years ago |
kaetemi | cfe1b2b8da | 11 years ago |
kaetemi | 6d946081e3 | 11 years ago |
kaetemi | 25cb297dcf | 11 years ago |
kaetemi | d415ff508e | 11 years ago |
kaetemi | 725ec35188 | 11 years ago |
kaetemi | d421f34c1a | 11 years ago |
kaetemi | 9cf5b3305c | 11 years ago |
kaetemi | 11e871c8ab | 11 years ago |
kaetemi | a17fc28955 | 11 years ago |
kaetemi | f7d0b292f7 | 11 years ago |
kaetemi | 75d2bf91bf | 11 years ago |
kaetemi | 17b3fa7b55 | 11 years ago |
kaetemi | 5002eea62a | 11 years ago |
kaetemi | a13d39e9f4 | 11 years ago |
kaetemi | 270342a07d | 11 years ago |
kaetemi | 2aa36f413d | 11 years ago |
kaetemi | 8532f79833 | 11 years ago |
kaetemi | 62381dd219 | 11 years ago |
kaetemi | 1a40e67fee | 11 years ago |
kaetemi | 11dc9110c2 | 11 years ago |
kaetemi | c0bb40b4a5 | 11 years ago |
kaetemi | c270ec5a58 | 11 years ago |
kaetemi | 12cb0ac306 | 11 years ago |
kaetemi | 78ec40afa7 | 11 years ago |
kaetemi | f62228592e | 11 years ago |
kaetemi | 7691e22a28 | 11 years ago |
kaetemi | 75e650432f | 11 years ago |
kaetemi | d5d82ce900 | 11 years ago |
kaetemi | 443eb54128 | 11 years ago |
kaetemi | 21eca5af5f | 11 years ago |
kaetemi | 424aa079a2 | 11 years ago |
kaetemi | b25747b2ef | 11 years ago |
kaetemi | 5d80073c0f | 11 years ago |
kaetemi | 7a960ed768 | 11 years ago |
kaetemi | 3885389b3b | 11 years ago |
kaetemi | 641125963e | 11 years ago |
kaetemi | 7ae15eb2b8 | 11 years ago |
kaetemi | 89c83f86e5 | 11 years ago |
kaetemi | 4fe91132ce | 11 years ago |
kaetemi | 5ad62b942a | 11 years ago |
kaetemi | 9c1165dcf9 | 11 years ago |
kaetemi | 8a60e5d4fa | 11 years ago |
kaetemi | 313de47e53 | 11 years ago |
kaetemi | 0802330985 | 11 years ago |
kaetemi | 441d3a66f5 | 11 years ago |
kaetemi | fce7aab22c | 11 years ago |
kaetemi | d7c5d30523 | 11 years ago |
kaetemi | 79141e0a9c | 11 years ago |
kaetemi | 3c1b39e103 | 11 years ago |
kaetemi | 3bba0fad6c | 11 years ago |
kaetemi | 40a6972753 | 11 years ago |
kaetemi | 118d6e0966 | 11 years ago |
kaetemi | 2139f39c43 | 11 years ago |
kaetemi | b978ec5c8e | 11 years ago |
kaetemi | b12c15ab5d | 11 years ago |
kaetemi | 99f37eb90c | 11 years ago |
kaetemi | be050f3927 | 11 years ago |
kaetemi | e01a42e21f | 11 years ago |
kaetemi | 082504bc70 | 11 years ago |
kaetemi | 444d652435 | 11 years ago |
kaetemi | 41f77780d5 | 11 years ago |
kaetemi | 870df89bcd | 11 years ago |
kaetemi | df1e27b82c | 11 years ago |
kaetemi | cc32c24f23 | 11 years ago |
kaetemi | fe967a6a12 | 11 years ago |
kaetemi | d7a0816547 | 11 years ago |
kaetemi | 3738aa71ce | 11 years ago |
dfighter1985 | 2ca40f10eb | 11 years ago |
dfighter1985 | 681a0bc8f3 | 11 years ago |
dfighter1985 | 43ad0189c6 | 11 years ago |
dfighter1985 | 709c54e485 | 11 years ago |
dfighter1985 | 3a84270a84 | 11 years ago |
dfighter1985 | fb38a7a0a7 | 11 years ago |
dfighter1985 | 2a158e76e1 | 11 years ago |
dfighter1985 | 9c69e1bf84 | 11 years ago |
dfighter1985 | a119d3e1a0 | 11 years ago |
dfighter1985 | 8f2e75415c | 11 years ago |
dfighter1985 | 9c0e1c2449 | 11 years ago |
dfighter1985 | 7f7a3e159b | 11 years ago |
dfighter1985 | 90dc025fd8 | 11 years ago |
dfighter1985 | eb9b3e4f0f | 11 years ago |
dfighter1985 | 1cc71457eb | 11 years ago |
dfighter1985 | ed885d3df6 | 11 years ago |
dfighter1985 | d37b004372 | 11 years ago |
dfighter1985 | a9a9768872 | 11 years ago |
dfighter1985 | f768704cbf | 11 years ago |
dfighter1985 | 6947a58ba1 | 11 years ago |
dfighter1985 | 8276cb0140 | 11 years ago |
dfighter1985 | 82a7237e7d | 11 years ago |
dfighter1985 | c105164eeb | 11 years ago |
dfighter1985 | 982b99d8d0 | 11 years ago |
dfighter1985 | 3b16f096cc | 11 years ago |
dfighter1985 | 32e814ecb6 | 11 years ago |
dfighter1985 | b70ce1eb09 | 11 years ago |
dfighter1985 | ace1b5386b | 11 years ago |
dfighter1985 | cf6d2a88bc | 11 years ago |
dfighter1985 | afb56ea660 | 11 years ago |
dfighter1985 | b0613e334c | 11 years ago |
dfighter1985 | 9d3e3a6a73 | 11 years ago |
dfighter1985 | 7b5aaf7e0f | 11 years ago |
dfighter1985 | 5326324b56 | 11 years ago |
dfighter1985 | 69a4a9f9a5 | 11 years ago |
dfighter1985 | 390d1bb156 | 11 years ago |
dfighter1985 | dbd5185de1 | 11 years ago |
dfighter1985 | 586c25f864 | 11 years ago |
dfighter1985 | 3949c210f6 | 11 years ago |
dfighter1985 | 76204a844d | 11 years ago |
dfighter1985 | b775237215 | 11 years ago |
dfighter1985 | c3c3f154b1 | 11 years ago |
dfighter1985 | 8269ec7be5 | 11 years ago |
dfighter1985 | 11fe86e552 | 11 years ago |
dfighter1985 | 72e7d09113 | 11 years ago |
dfighter1985 | 69c41a31ae | 11 years ago |
dfighter1985 | 0453f30582 | 11 years ago |
dfighter1985 | f194704a28 | 11 years ago |
dfighter1985 | 0ab68ef25f | 11 years ago |
dfighter1985 | 9a647a893c | 11 years ago |
dfighter1985 | 2e4b6bb6ae | 11 years ago |
dfighter1985 | a9a1d17c4f | 11 years ago |
dfighter1985 | 1d71a540ba | 11 years ago |
dfighter1985 | c6bb6ec2a9 | 11 years ago |
dfighter1985 | 6c58856ed7 | 11 years ago |
dfighter1985 | 4ba9d815d4 | 11 years ago |
dfighter1985 | 6f396aa8f7 | 11 years ago |
dfighter1985 | 01ef7fd973 | 11 years ago |
dfighter1985 | 4ec92d2f06 | 11 years ago |
dfighter1985 | 28c4b5b157 | 11 years ago |
dfighter1985 | 354d2b8c65 | 11 years ago |
dfighter1985 | 43817746ec | 11 years ago |
dfighter1985 | 0def5caf54 | 11 years ago |
dfighter1985 | 3c99323ada | 11 years ago |
dfighter1985 | 5fbfe7b17f | 11 years ago |
dfighter1985 | 8d57eac3d4 | 11 years ago |
dfighter1985 | c6b714299a | 11 years ago |
dfighter1985 | bbb4762b77 | 11 years ago |
dfighter1985 | 06d7bd9c74 | 11 years ago |
dfighter1985 | d6558b5b0d | 12 years ago |
dfighter1985 | 37c8b096b1 | 12 years ago |
dfighter1985 | 300cd284d1 | 12 years ago |
dfighter1985 | 36a30e83a0 | 12 years ago |
dfighter1985 | 1acccdb5ef | 12 years ago |
dfighter1985 | 16290f7ff9 | 12 years ago |
dfighter1985 | 882118612d | 12 years ago |
dfighter1985 | 77ae38e452 | 12 years ago |
dfighter1985 | 931c18cb51 | 12 years ago |
dfighter1985 | 34de0b5569 | 12 years ago |
dfighter1985 | a1cf2c640b | 12 years ago |
dfighter1985 | 35429fea43 | 12 years ago |
dfighter1985 | 7307d748ea | 12 years ago |
dfighter1985 | 14aea7acc9 | 12 years ago |
dfighter1985 | eabc209303 | 12 years ago |
dfighter1985 | 888812e72d | 12 years ago |
dfighter1985 | 5bc7ecf799 | 12 years ago |
dfighter1985 | 86482ed82f | 12 years ago |
dfighter1985 | ed23ec247d | 12 years ago |
dfighter1985 | 0ab6322955 | 12 years ago |
dfighter1985 | 997a231bff | 12 years ago |
dfighter1985 | c74e279282 | 12 years ago |
dfighter1985 | e740fd4aeb | 12 years ago |
dfighter1985 | d67640dab6 | 12 years ago |
dfighter1985 | 169ee413df | 12 years ago |
dfighter1985 | f77bcf6981 | 12 years ago |
dfighter1985 | 2c84b164ee | 12 years ago |
dfighter1985 | 750e7b5e8e | 12 years ago |
dfighter1985 | d64dd4f23f | 12 years ago |
dfighter1985 | 6b3b8855ee | 12 years ago |
dfighter1985 | 2ca79259ce | 12 years ago |
dfighter1985 | 1414f4d3c1 | 12 years ago |
dfighter1985 | 12df2fd71c | 12 years ago |
dfighter1985 | 69cc5e48ed | 12 years ago |
dfighter1985 | f6737c8aa4 | 12 years ago |
dfighter1985 | 4f8ac17529 | 12 years ago |
dfighter1985 | c49265b9db | 12 years ago |
dfighter1985 | 7384cdd10a | 12 years ago |
dfighter1985 | 0dcb470a19 | 12 years ago |
dfighter1985 | 46363f1909 | 12 years ago |
dfighter1985 | d67198580a | 12 years ago |
dfighter1985 | 3ca6a98aec | 12 years ago |
dfighter1985 | 9dc91a6ed1 | 12 years ago |
dfighter1985 | 41e84066fb | 12 years ago |
dfighter1985 | f5358f712c | 12 years ago |
dfighter1985 | b3ea9ee787 | 12 years ago |
dfighter1985 | ed5741addd | 12 years ago |
dfighter1985 | f387256984 | 12 years ago |
dfighter1985 | c7e8ebcf05 | 12 years ago |
dfighter1985 | 50bb8c5d60 | 12 years ago |
dfighter1985 | 10aad932db | 12 years ago |
dfighter1985 | dd0a691fb8 | 12 years ago |
dfighter1985 | 90595b5bb6 | 12 years ago |
dfighter1985 | 3aae79c38b | 12 years ago |
dfighter1985 | 6fba0c094a | 12 years ago |
dfighter1985 | c90f51afbe | 12 years ago |
dfighter1985 | 82d29b3e23 | 12 years ago |
dfighter1985 | a81db21e0a | 12 years ago |
dfighter1985 | 932f2bdd27 | 12 years ago |
dfighter1985 | f925666d83 | 12 years ago |
dfighter1985 | b1777ff546 | 12 years ago |
dfighter1985 | f34f4d10d3 | 12 years ago |
dfighter1985 | 15b4be874e | 12 years ago |
dfighter1985 | 31451aa0f6 | 12 years ago |
dfighter1985 | cfc4565b5d | 12 years ago |
dfighter1985 | 6360302a2b | 12 years ago |
dfighter1985 | bb6195f858 | 12 years ago |
dfighter1985 | ee2c14670e | 12 years ago |
dfighter1985 | 44188b58b7 | 12 years ago |
dfighter1985 | 0d98540f2e | 12 years ago |
dfighter1985 | adab29e5a6 | 12 years ago |
dfighter1985 | 5e69d558ec | 12 years ago |
dfighter1985 | b444f69db3 | 12 years ago |
dfighter1985 | e41a15ae30 | 12 years ago |
dfighter1985 | d06f675c08 | 12 years ago |
dfighter1985 | 28c49a0427 | 12 years ago |
dfighter1985 | 5c7540d85e | 12 years ago |
dfighter1985 | 8f45e49fa0 | 12 years ago |
dfighter1985 | 7f0ae42a40 | 12 years ago |
dfighter1985 | e44b663bdb | 12 years ago |
dfighter1985 | 2b5eddbe95 | 12 years ago |
dfighter1985 | 879f2f3a85 | 12 years ago |
dfighter1985 | 40da205b59 | 12 years ago |
dfighter1985 | 296083ba61 | 12 years ago |
dfighter1985 | d5e5775f29 | 12 years ago |
dfighter1985 | dddd531249 | 12 years ago |
dfighter1985 | 1c0d74fc00 | 12 years ago |
dfighter1985 | dcf3ba2785 | 12 years ago |
dfighter1985 | 0c64261e22 | 12 years ago |
dfighter1985 | f94960dffe | 12 years ago |
dfighter1985 | 3ff8613205 | 12 years ago |
dfighter1985 | 7a9ae41fd5 | 12 years ago |
dfighter1985 | ac98c00088 | 12 years ago |
dfighter1985 | 80bcf2026a | 12 years ago |
dfighter1985 | e99c1e2785 | 12 years ago |
dfighter1985 | b776409cc8 | 12 years ago |
dfighter1985 | 6ad18a88f5 | 12 years ago |
dfighter1985 | 37fb2cfcda | 12 years ago |
dfighter1985 | fb3f069a38 | 12 years ago |
dfighter1985 | c8147b301c | 12 years ago |
dfighter1985 | 192e9c058a | 12 years ago |
dfighter1985 | a113c81db3 | 12 years ago |
dfighter1985 | 9306bd71e6 | 12 years ago |
dfighter1985 | c2296a2a93 | 12 years ago |
dfighter1985 | 04dcad32e7 | 12 years ago |
dfighter1985 | a2ccb7e796 | 12 years ago |
dfighter1985 | 6d31a50f5d | 12 years ago |
dfighter1985 | 42bf13dcfd | 12 years ago |
dfighter1985 | 66fb3c1284 | 12 years ago |
dfighter1985 | 8408ddd552 | 12 years ago |
dfighter1985 | 96eb64ecbe | 12 years ago |
dfighter1985 | cc86cdd3ef | 12 years ago |
dfighter1985 | c9cd9cdd3c | 12 years ago |
dfighter1985 | 1f2ff5721e | 12 years ago |
dfighter1985 | 00b47d6a50 | 12 years ago |
dfighter1985 | 128c2a3270 | 12 years ago |
dfighter1985 | a57bb57c58 | 12 years ago |
dfighter1985 | a71e4bc3ed | 12 years ago |
dfighter1985 | 6d79a2cf6f | 12 years ago |
dfighter1985 | 2e6b1a834f | 12 years ago |
dfighter1985 | 9294cdc644 | 12 years ago |
dfighter1985 | ea06a2c656 | 12 years ago |
dfighter1985 | 9ee24b3b93 | 12 years ago |
dfighter1985 | ed267a6587 | 12 years ago |
dfighter1985 | fa3ad050de | 12 years ago |
dfighter1985 | d96b7e2d66 | 12 years ago |
dfighter1985 | c9605dde57 | 12 years ago |
dfighter1985 | 832178a83f | 12 years ago |
dfighter1985 | 94fe455a1a | 12 years ago |
dfighter1985 | 067676c049 | 12 years ago |
dfighter1985 | 02e61b1e1b | 12 years ago |
dfighter1985 | 30f8c9f9e1 | 12 years ago |
dfighter1985 | 8c35946010 | 12 years ago |
dfighter1985 | 85e885f274 | 12 years ago |
dfighter1985 | 26fab0c173 | 12 years ago |
dfighter1985 | 32071d9053 | 12 years ago |
dfighter1985 | 40c95e82ff | 12 years ago |
dfighter1985 | abbc09e19c | 12 years ago |
dfighter1985 | d46944f258 | 12 years ago |
dfighter1985 | e87e265c42 | 12 years ago |
dfighter1985 | 5aec012c5f | 12 years ago |
dfighter1985 | ca52a76e5d | 12 years ago |
dfighter1985 | 8fa5067506 | 12 years ago |
@ -1,28 +1,27 @@
|
||||
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 ryzomcore/v0.8.0
|
||||
00d9b6e29e95f56785fbf85abe60afd34674f402 ryzomcore/v0.9.0
|
||||
79776c337176dd5b02e1a74fe5dfb703b91747aa ryzomcore/v0.9.1
|
||||
fedf2aa443d09707beed814b0f499c6a5519cc84 ryzomcore/v0.10.0
|
||||
edaa3624a56420b02ccc64c26059801a389927ee ryzomcore/v0.11.0
|
||||
e3fe4855f22c3e75722e015dc33c091c340b3ad7 ryzomcore/v0.11.1
|
||||
9e583b717fd63be0be9fd60b99087abf1691ea49 ryzomcore/v0.11.2
|
||||
bfe5628e14a024ba7ea32e4b326ae433a07856b9 ryzomcore/v0.11.3
|
||||
9a6120735daa97c96ac5d85ca35c7f21f607bd87 ryzomcore/v0.12.0
|
||||
3e17907af67e8d66d80e6b714707bbf912607f2a ryzom-patch-3.0.0
|
||||
153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom-patch-3.0.1
|
||||
9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom-patch-3.0.2
|
||||
4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom-patch-3.1.0
|
||||
d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom-patch-3.1.0-hotfix
|
||||
043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom-patch-3.1.0-april_patch
|
||||
4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom-patch-3.2.0
|
||||
18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom-patch-3.2.1
|
||||
822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom-patch-3.3.0
|
||||
00dde390a394fce9da06c2f3264140282158d39f ryzom-patch-3.3.0
|
||||
dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom-patch-3.3.1
|
||||
fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom-patch-3.4.0
|
||||
70eba02e8eab6920586dbabf74e9e8180c729980 ryzom-patch-3.4.0 Steam Fix
|
||||
3941482843f9cd130cfc16634efc08d34a98ed35 ryzom-patch-3.4.0 Atysmas
|
||||
ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom-patch-3.5.0
|
||||
95783afa226f241062134eb62f4323295d29ac84 ryzom-patch-3.5.0.9637
|
||||
2102fb276eb69d49ed4923042215312a63c47c08 Live-746
|
||||
8eb94c3549be898fdc4a7c6d791d2477bdc11a18 ryzomcore/v1.0.1
|
||||
3e92c7104c20d6bc6c2147b4b5fc289e8621d322 ryzomcore/v1.0.0
|
||||
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 v0.8.0
|
||||
00d9b6e29e95f56785fbf85abe60afd34674f402 v0.9.0
|
||||
79776c337176dd5b02e1a74fe5dfb703b91747aa v0.9.1
|
||||
fedf2aa443d09707beed814b0f499c6a5519cc84 v0.10.0
|
||||
edaa3624a56420b02ccc64c26059801a389927ee v0.11.0
|
||||
e3fe4855f22c3e75722e015dc33c091c340b3ad7 v0.11.1
|
||||
9e583b717fd63be0be9fd60b99087abf1691ea49 v0.11.2
|
||||
bfe5628e14a024ba7ea32e4b326ae433a07856b9 v0.11.3
|
||||
9a6120735daa97c96ac5d85ca35c7f21f607bd87 v0.12.0
|
||||
3e92c7104c20d6bc6c2147b4b5fc289e8621d322 v1.0.0
|
||||
8eb94c3549be898fdc4a7c6d791d2477bdc11a18 v1.0.1
|
||||
3e17907af67e8d66d80e6b714707bbf912607f2a ryzom/3.0.0
|
||||
153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom/3.0.1
|
||||
9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom/3.0.2
|
||||
4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom/3.1.0
|
||||
d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom/3.1.0-hotfix
|
||||
043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom/3.1.0-april_patch
|
||||
4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom/3.2.0
|
||||
18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom/3.2.1
|
||||
822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom/3.3.0
|
||||
00dde390a394fce9da06c2f3264140282158d39f ryzom/3.3.0
|
||||
dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom/3.3.1
|
||||
fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom/3.4.0
|
||||
70eba02e8eab6920586dbabf74e9e8180c729980 ryzom/3.4.0-steam_fix
|
||||
3941482843f9cd130cfc16634efc08d34a98ed35 ryzom/3.4.0-atysmas
|
||||
ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom/3.5.0
|
||||
95783afa226f241062134eb62f4323295d29ac84 ryzom/3.5.0.9637
|
||||
|
@ -1,8 +0,0 @@
|
||||
# This file is parsed by HunterGate command
|
||||
|
||||
hunter_config(luabind
|
||||
VERSION 0.9.1
|
||||
URL "https://github.com/nimetu/luabind/tarball/2fa4606"
|
||||
SHA1 "3b4646bab9f0b2362d7b8d71d78e40deaf3cc747"
|
||||
)
|
||||
|
@ -1,537 +0,0 @@
|
||||
# Copyright (c) 2013-2019, Ruslan Baratov
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# This is a gate file to Hunter package manager.
|
||||
# Include this file using `include` command and add package you need, example:
|
||||
#
|
||||
# cmake_minimum_required(VERSION 3.2)
|
||||
#
|
||||
# include("cmake/HunterGate.cmake")
|
||||
# HunterGate(
|
||||
# URL "https://github.com/path/to/hunter/archive.tar.gz"
|
||||
# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d"
|
||||
# )
|
||||
#
|
||||
# project(MyProject)
|
||||
#
|
||||
# hunter_add_package(Foo)
|
||||
# hunter_add_package(Boo COMPONENTS Bar Baz)
|
||||
#
|
||||
# Projects:
|
||||
# * https://github.com/hunter-packages/gate/
|
||||
# * https://github.com/ruslo/hunter
|
||||
|
||||
option(HUNTER_ENABLED "Enable Hunter package manager support" ON)
|
||||
|
||||
if(HUNTER_ENABLED)
|
||||
if(CMAKE_VERSION VERSION_LESS "3.2")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"At least CMake version 3.2 required for Hunter dependency management."
|
||||
" Update CMake or set HUNTER_ENABLED to OFF."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(CMakeParseArguments) # cmake_parse_arguments
|
||||
|
||||
option(HUNTER_STATUS_PRINT "Print working status" ON)
|
||||
option(HUNTER_STATUS_DEBUG "Print a lot info" OFF)
|
||||
option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON)
|
||||
set(HUNTER_ROOT "" CACHE FILEPATH "Override the HUNTER_ROOT.")
|
||||
|
||||
set(HUNTER_ERROR_PAGE "https://hunter.readthedocs.io/en/latest/reference/errors")
|
||||
|
||||
function(hunter_gate_status_print)
|
||||
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
|
||||
foreach(print_message ${ARGV})
|
||||
message(STATUS "[hunter] ${print_message}")
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_status_debug)
|
||||
if(HUNTER_STATUS_DEBUG)
|
||||
foreach(print_message ${ARGV})
|
||||
string(TIMESTAMP timestamp)
|
||||
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}")
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_error_page error_page)
|
||||
message("------------------------------ ERROR ------------------------------")
|
||||
message(" ${HUNTER_ERROR_PAGE}/${error_page}.html")
|
||||
message("-------------------------------------------------------------------")
|
||||
message("")
|
||||
message(FATAL_ERROR "")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_internal_error)
|
||||
message("")
|
||||
foreach(print_message ${ARGV})
|
||||
message("[hunter ** INTERNAL **] ${print_message}")
|
||||
endforeach()
|
||||
message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
|
||||
message("")
|
||||
hunter_gate_error_page("error.internal")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_fatal_error)
|
||||
cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}")
|
||||
if("${hunter_ERROR_PAGE}" STREQUAL "")
|
||||
hunter_gate_internal_error("Expected ERROR_PAGE")
|
||||
endif()
|
||||
message("")
|
||||
foreach(x ${hunter_UNPARSED_ARGUMENTS})
|
||||
message("[hunter ** FATAL ERROR **] ${x}")
|
||||
endforeach()
|
||||
message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
|
||||
message("")
|
||||
hunter_gate_error_page("${hunter_ERROR_PAGE}")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_user_error)
|
||||
hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_self root version sha1 result)
|
||||
string(COMPARE EQUAL "${root}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("root is empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${version}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("version is empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${sha1}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("sha1 is empty")
|
||||
endif()
|
||||
|
||||
string(SUBSTRING "${sha1}" 0 7 archive_id)
|
||||
|
||||
if(EXISTS "${root}/cmake/Hunter")
|
||||
set(hunter_self "${root}")
|
||||
else()
|
||||
set(
|
||||
hunter_self
|
||||
"${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked"
|
||||
)
|
||||
endif()
|
||||
|
||||
set("${result}" "${hunter_self}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Set HUNTER_GATE_ROOT cmake variable to suitable value.
|
||||
function(hunter_gate_detect_root)
|
||||
# Check CMake variable
|
||||
if(HUNTER_ROOT)
|
||||
set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check environment variable
|
||||
if(DEFINED ENV{HUNTER_ROOT})
|
||||
set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT detected by environment variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check HOME environment variable
|
||||
if(DEFINED ENV{HOME})
|
||||
set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check SYSTEMDRIVE and USERPROFILE environment variable (windows only)
|
||||
if(WIN32)
|
||||
if(DEFINED ENV{SYSTEMDRIVE})
|
||||
set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug(
|
||||
"HUNTER_ROOT set using SYSTEMDRIVE environment variable"
|
||||
)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{USERPROFILE})
|
||||
set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug(
|
||||
"HUNTER_ROOT set using USERPROFILE environment variable"
|
||||
)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
hunter_gate_fatal_error(
|
||||
"Can't detect HUNTER_ROOT"
|
||||
ERROR_PAGE "error.detect.hunter.root"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_download dir)
|
||||
string(
|
||||
COMPARE
|
||||
NOTEQUAL
|
||||
"$ENV{HUNTER_DISABLE_AUTOINSTALL}"
|
||||
""
|
||||
disable_autoinstall
|
||||
)
|
||||
if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL)
|
||||
hunter_gate_fatal_error(
|
||||
"Hunter not found in '${dir}'"
|
||||
"Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'"
|
||||
"Settings:"
|
||||
" HUNTER_ROOT: ${HUNTER_GATE_ROOT}"
|
||||
" HUNTER_SHA1: ${HUNTER_GATE_SHA1}"
|
||||
ERROR_PAGE "error.run.install"
|
||||
)
|
||||
endif()
|
||||
string(COMPARE EQUAL "${dir}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("Empty 'dir' argument")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("HUNTER_GATE_SHA1 empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("HUNTER_GATE_URL empty")
|
||||
endif()
|
||||
|
||||
set(done_location "${dir}/DONE")
|
||||
set(sha1_location "${dir}/SHA1")
|
||||
|
||||
set(build_dir "${dir}/Build")
|
||||
set(cmakelists "${dir}/CMakeLists.txt")
|
||||
|
||||
hunter_gate_status_debug("Locking directory: ${dir}")
|
||||
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION)
|
||||
hunter_gate_status_debug("Lock done")
|
||||
|
||||
if(EXISTS "${done_location}")
|
||||
# while waiting for lock other instance can do all the job
|
||||
hunter_gate_status_debug("File '${done_location}' found, skip install")
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${build_dir}")
|
||||
file(REMOVE_RECURSE "${cmakelists}")
|
||||
|
||||
file(MAKE_DIRECTORY "${build_dir}") # check directory permissions
|
||||
|
||||
# Disabling languages speeds up a little bit, reduces noise in the output
|
||||
# and avoids path too long windows error
|
||||
file(
|
||||
WRITE
|
||||
"${cmakelists}"
|
||||
"cmake_minimum_required(VERSION 3.2)\n"
|
||||
"project(HunterDownload LANGUAGES NONE)\n"
|
||||
"include(ExternalProject)\n"
|
||||
"ExternalProject_Add(\n"
|
||||
" Hunter\n"
|
||||
" URL\n"
|
||||
" \"${HUNTER_GATE_URL}\"\n"
|
||||
" URL_HASH\n"
|
||||
" SHA1=${HUNTER_GATE_SHA1}\n"
|
||||
" DOWNLOAD_DIR\n"
|
||||
" \"${dir}\"\n"
|
||||
" TLS_VERIFY\n"
|
||||
" ${HUNTER_TLS_VERIFY}\n"
|
||||
" SOURCE_DIR\n"
|
||||
" \"${dir}/Unpacked\"\n"
|
||||
" CONFIGURE_COMMAND\n"
|
||||
" \"\"\n"
|
||||
" BUILD_COMMAND\n"
|
||||
" \"\"\n"
|
||||
" INSTALL_COMMAND\n"
|
||||
" \"\"\n"
|
||||
")\n"
|
||||
)
|
||||
|
||||
if(HUNTER_STATUS_DEBUG)
|
||||
set(logging_params "")
|
||||
else()
|
||||
set(logging_params OUTPUT_QUIET)
|
||||
endif()
|
||||
|
||||
hunter_gate_status_debug("Run generate")
|
||||
|
||||
# Need to add toolchain file too.
|
||||
# Otherwise on Visual Studio + MDD this will fail with error:
|
||||
# "Could not find an appropriate version of the Windows 10 SDK installed on this machine"
|
||||
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
|
||||
get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE)
|
||||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}")
|
||||
else()
|
||||
# 'toolchain_arg' can't be empty
|
||||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make)
|
||||
if(no_make)
|
||||
set(make_arg "")
|
||||
else()
|
||||
# Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM
|
||||
set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
"-H${dir}"
|
||||
"-B${build_dir}"
|
||||
"-G${CMAKE_GENERATOR}"
|
||||
"${toolchain_arg}"
|
||||
${make_arg}
|
||||
WORKING_DIRECTORY "${dir}"
|
||||
RESULT_VARIABLE download_result
|
||||
${logging_params}
|
||||
)
|
||||
|
||||
if(NOT download_result EQUAL 0)
|
||||
hunter_gate_internal_error(
|
||||
"Configure project failed."
|
||||
"To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}"
|
||||
"In directory ${dir}"
|
||||
)
|
||||
endif()
|
||||
|
||||
hunter_gate_status_print(
|
||||
"Initializing Hunter workspace (${HUNTER_GATE_SHA1})"
|
||||
" ${HUNTER_GATE_URL}"
|
||||
" -> ${dir}"
|
||||
)
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}" --build "${build_dir}"
|
||||
WORKING_DIRECTORY "${dir}"
|
||||
RESULT_VARIABLE download_result
|
||||
${logging_params}
|
||||
)
|
||||
|
||||
if(NOT download_result EQUAL 0)
|
||||
hunter_gate_internal_error("Build project failed")
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${build_dir}")
|
||||
file(REMOVE_RECURSE "${cmakelists}")
|
||||
|
||||
file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}")
|
||||
file(WRITE "${done_location}" "DONE")
|
||||
|
||||
hunter_gate_status_debug("Finished")
|
||||
endfunction()
|
||||
|
||||
# Must be a macro so master file 'cmake/Hunter' can
|
||||
# apply all variables easily just by 'include' command
|
||||
# (otherwise PARENT_SCOPE magic needed)
|
||||
macro(HunterGate)
|
||||
if(HUNTER_GATE_DONE)
|
||||
# variable HUNTER_GATE_DONE set explicitly for external project
|
||||
# (see `hunter_download`)
|
||||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
|
||||
endif()
|
||||
|
||||
# First HunterGate command will init Hunter, others will be ignored
|
||||
get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET)
|
||||
|
||||
if(NOT HUNTER_ENABLED)
|
||||
# Empty function to avoid error "unknown function"
|
||||
function(hunter_add_package)
|
||||
endfunction()
|
||||
|
||||
set(
|
||||
_hunter_gate_disabled_mode_dir
|
||||
"${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode"
|
||||
)
|
||||
if(EXISTS "${_hunter_gate_disabled_mode_dir}")
|
||||
hunter_gate_status_debug(
|
||||
"Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}"
|
||||
)
|
||||
list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}")
|
||||
endif()
|
||||
elseif(_hunter_gate_done)
|
||||
hunter_gate_status_debug("Secondary HunterGate (use old settings)")
|
||||
hunter_gate_self(
|
||||
"${HUNTER_CACHED_ROOT}"
|
||||
"${HUNTER_VERSION}"
|
||||
"${HUNTER_SHA1}"
|
||||
_hunter_self
|
||||
)
|
||||
include("${_hunter_self}/cmake/Hunter")
|
||||
else()
|
||||
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name)
|
||||
if(_have_project_name)
|
||||
hunter_gate_fatal_error(
|
||||
"Please set HunterGate *before* 'project' command. "
|
||||
"Detected project: ${PROJECT_NAME}"
|
||||
ERROR_PAGE "error.huntergate.before.project"
|
||||
)
|
||||
endif()
|
||||
|
||||
cmake_parse_arguments(
|
||||
HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV}
|
||||
)
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1)
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url)
|
||||
string(
|
||||
COMPARE
|
||||
NOTEQUAL
|
||||
"${HUNTER_GATE_UNPARSED_ARGUMENTS}"
|
||||
""
|
||||
_have_unparsed
|
||||
)
|
||||
string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global)
|
||||
string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath)
|
||||
|
||||
if(_have_unparsed)
|
||||
hunter_gate_user_error(
|
||||
"HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}"
|
||||
)
|
||||
endif()
|
||||
if(_empty_sha1)
|
||||
hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory")
|
||||
endif()
|
||||
if(_empty_url)
|
||||
hunter_gate_user_error("URL suboption of HunterGate is mandatory")
|
||||
endif()
|
||||
if(_have_global)
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)")
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)")
|
||||
endif()
|
||||
endif()
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
if(_have_global)
|
||||
hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)")
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)")
|
||||
endif()
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
if(_have_global)
|
||||
hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)")
|
||||
endif()
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
hunter_gate_detect_root() # set HUNTER_GATE_ROOT
|
||||
|
||||
# Beautify path, fix probable problems with windows path slashes
|
||||
get_filename_component(
|
||||
HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE
|
||||
)
|
||||
hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}")
|
||||
if(NOT HUNTER_ALLOW_SPACES_IN_PATH)
|
||||
string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces)
|
||||
if(NOT _contain_spaces EQUAL -1)
|
||||
hunter_gate_fatal_error(
|
||||
"HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces."
|
||||
"Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error"
|
||||
"(Use at your own risk!)"
|
||||
ERROR_PAGE "error.spaces.in.hunter.root"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
string(
|
||||
REGEX
|
||||
MATCH
|
||||
"[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*"
|
||||
HUNTER_GATE_VERSION
|
||||
"${HUNTER_GATE_URL}"
|
||||
)
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty)
|
||||
if(_is_empty)
|
||||
set(HUNTER_GATE_VERSION "unknown")
|
||||
endif()
|
||||
|
||||
hunter_gate_self(
|
||||
"${HUNTER_GATE_ROOT}"
|
||||
"${HUNTER_GATE_VERSION}"
|
||||
"${HUNTER_GATE_SHA1}"
|
||||
_hunter_self
|
||||
)
|
||||
|
||||
set(_master_location "${_hunter_self}/cmake/Hunter")
|
||||
if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter")
|
||||
# Hunter downloaded manually (e.g. by 'git clone')
|
||||
set(_unused "xxxxxxxxxx")
|
||||
set(HUNTER_GATE_SHA1 "${_unused}")
|
||||
set(HUNTER_GATE_VERSION "${_unused}")
|
||||
else()
|
||||
get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE)
|
||||
set(_done_location "${_archive_id_location}/DONE")
|
||||
set(_sha1_location "${_archive_id_location}/SHA1")
|
||||
|
||||
# Check Hunter already downloaded by HunterGate
|
||||
if(NOT EXISTS "${_done_location}")
|
||||
hunter_gate_download("${_archive_id_location}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_done_location}")
|
||||
hunter_gate_internal_error("hunter_gate_download failed")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_sha1_location}")
|
||||
hunter_gate_internal_error("${_sha1_location} not found")
|
||||
endif()
|
||||
file(READ "${_sha1_location}" _sha1_value)
|
||||
string(TOLOWER "${_sha1_value}" _sha1_value_lower)
|
||||
string(TOLOWER "${HUNTER_GATE_SHA1}" _HUNTER_GATE_SHA1_lower)
|
||||
string(COMPARE EQUAL "${_sha1_value_lower}" "${_HUNTER_GATE_SHA1_lower}" _is_equal)
|
||||
if(NOT _is_equal)
|
||||
hunter_gate_internal_error(
|
||||
"Short SHA1 collision:"
|
||||
" ${_sha1_value} (from ${_sha1_location})"
|
||||
" ${HUNTER_GATE_SHA1} (HunterGate)"
|
||||
)
|
||||
endif()
|
||||
if(NOT EXISTS "${_master_location}")
|
||||
hunter_gate_user_error(
|
||||
"Master file not found:"
|
||||
" ${_master_location}"
|
||||
"try to update Hunter/HunterGate"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
include("${_master_location}")
|
||||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
|
||||
endif()
|
||||
endmacro()
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
|
||||
Copyright (C) 2015 Jan Boon <jan.boon@kaetemi.be>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef NL_UNIFORM_BUFFER_H
|
||||
#define NL_UNIFORM_BUFFER_H
|
||||
|
||||
#include <nel/misc/types_nl.h>
|
||||
#include <nel/misc/smart_ptr.h>
|
||||
#include <nel/misc/vector.h>
|
||||
#include <nel/misc/vector_2f.h>
|
||||
#include <nel/misc/vector_h.h>
|
||||
#include <nel/misc/matrix.h>
|
||||
|
||||
#include <nel/3d/uniform_buffer_format.h>
|
||||
|
||||
#define NL3D_UNIFORM_BUFFER_DEBUG 1
|
||||
|
||||
namespace NLMISC {
|
||||
class CMatrix;
|
||||
}
|
||||
|
||||
namespace NL3D {
|
||||
|
||||
class CUniformBuffer;
|
||||
class IUBDrvInfos;
|
||||
typedef std::list<IUBDrvInfos*> TUBDrvInfoPtrList;
|
||||
typedef TUBDrvInfoPtrList::iterator ItUBDrvInfoPtrList;
|
||||
|
||||
/*
|
||||
**** IMPORTANT ********************
|
||||
**** IF YOU MODIFY THE STRUCTURE OF THIS CLASS, PLEASE INCREMENT IDriver::InterfaceVersion TO INVALIDATE OLD DRIVER DLL
|
||||
***********************************
|
||||
*/
|
||||
|
||||
#if NL3D_UNIFORM_BUFFER_DEBUG
|
||||
#define NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(ub) nlassert(ub->Locked)
|
||||
#else
|
||||
#define NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(ub) /* ub->Locked doesn't exist when NL3D_UNIFORM_BUFFER_DEBUG is 0 */
|
||||
#endif
|
||||
|
||||
// Uniform buffer
|
||||
class CUniformBuffer : public NLMISC::CRefCount
|
||||
{
|
||||
public:
|
||||
CUniformBuffer();
|
||||
~CUniformBuffer();
|
||||
|
||||
void *lock();
|
||||
void unlock();
|
||||
|
||||
inline void set(sint offset, float f) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); reinterpret_cast<float &>(m_HostMemory[offset]) = f; }
|
||||
inline void set(sint offset, float f0, float f1) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); float *f = reinterpret_cast<float *>(&m_HostMemory[offset]); f[0] = f0; f[1] = f1; }
|
||||
inline void set(sint offset, float f0, float f1, float f2) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); float *f = reinterpret_cast<float *>(&m_HostMemory[offset]); f[0] = f0; f[1] = f1; f[2] = f2; }
|
||||
inline void set(sint offset, float f0, float f1, float f2, float f3) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); float *f = reinterpret_cast<float *>(&m_HostMemory[offset]); f[0] = f0; f[1] = f1; f[2] = f2; f[3] = f3; }
|
||||
inline void set(sint offset, NLMISC::CVector2f vec2) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); reinterpret_cast<NLMISC::CVector2f &>(m_HostMemory[offset]) = vec2; }
|
||||
inline void set(sint offset, NLMISC::CVector vec3) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); reinterpret_cast<NLMISC::CVector &>(m_HostMemory[offset]) = vec3; }
|
||||
inline void set(sint offset, NLMISC::CVectorH vec4) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); reinterpret_cast<NLMISC::CVectorH &>(m_HostMemory[offset]) = vec4; }
|
||||
inline void set(sint offset, NLMISC::CMatrix mat4) { NL3D_UNIFORM_BUFFER_ASSERT_LOCKED(this); float *f = reinterpret_cast<float *>(&m_HostMemory[offset]); mat4.get(f); }
|
||||
|
||||
private:
|
||||
std::vector<char> m_HostMemory;
|
||||
|
||||
public:
|
||||
CUniformBufferFormat Format;
|
||||
|
||||
public: // Driver-only
|
||||
NLMISC::CRefPtr<IUBDrvInfos> DrvInfos;
|
||||
bool Touched;
|
||||
|
||||
#if NL3D_UNIFORM_BUFFER_DEBUG
|
||||
sint Locked;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
// TODO: Investigate if more efficient or not to do like vertex_buffer and call into driver for locking (what are best practices for updating uniform buffers?)
|
||||
class IUBDrvInfos : public NLMISC::CRefCount
|
||||
{
|
||||
protected:
|
||||
IDriver *m_Driver;
|
||||
private:
|
||||
ItUBDrvInfoPtrList m_DriverIterator;
|
||||
|
||||
public:
|
||||
NLMISC::CRefPtr<CUniformBuffer> UniformBufferPtr;
|
||||
|
||||
IUBDrvInfos(IDriver *drv, ItUBDrvInfoPtrList it, CUniformBuffer *ub) { m_Driver = drv; m_DriverIterator = it; UniformBufferPtr = ub; }
|
||||
|
||||
virtual ~IUBDrvInfos();
|
||||
};
|
||||
|
||||
} /* namespace NL3D */
|
||||
|
||||
#endif /* #ifndef NL_UNIFORM_BUFFER_H */
|
||||
|
||||
/* end of file */
|
@ -0,0 +1,145 @@
|
||||
/*
|
||||
|
||||
Copyright (C) 2015 Jan Boon <jan.boon@kaetemi.be>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef NL_UNIFORM_BUFFER_FORMAT_H
|
||||
#define NL_UNIFORM_BUFFER_FORMAT_H
|
||||
|
||||
#include <nel/misc/types_nl.h>
|
||||
#include <nel/misc/string_mapper.h>
|
||||
|
||||
namespace NL3D {
|
||||
|
||||
/*
|
||||
**** IMPORTANT ********************
|
||||
**** IF YOU MODIFY THE STRUCTURE OF THIS CLASS, PLEASE INCREMENT IDriver::InterfaceVersion TO INVALIDATE OLD DRIVER DLL
|
||||
***********************************
|
||||
*/
|
||||
|
||||
// Uniform buffer format generation following glsl std140 rules
|
||||
class CUniformBufferFormat
|
||||
{
|
||||
public:
|
||||
CUniformBufferFormat() : m_Hash(0) { }
|
||||
|
||||
// When changing, update
|
||||
// - s_TypeAlignment
|
||||
// - s_TypeSize
|
||||
// - NL3D::NLDRIVERGL3::s_TypeKeyword
|
||||
enum TType
|
||||
{
|
||||
Float, // float
|
||||
FloatVec2, // CVector2f
|
||||
FloatVec3, // CVector
|
||||
FloatVec4, // CVectorH
|
||||
SInt, // sint32
|
||||
SIntVec2,
|
||||
SIntVec3,
|
||||
SIntVec4,
|
||||
UInt, // uint32
|
||||
UIntVec2,
|
||||
UIntVec3,
|
||||
UIntVec4,
|
||||
Bool,
|
||||
BoolVec2,
|
||||
BoolVec3,
|
||||
BoolVec4,
|
||||
FloatMat2,
|
||||
FloatMat3,
|
||||
FloatMat4, // CMatrix
|
||||
FloatMat2x3,
|
||||
FloatMat2x4,
|
||||
FloatMat3x2,
|
||||
FloatMat3x4,
|
||||
FloatMat4x2,
|
||||
FloatMat4x3,
|
||||
};
|
||||
|
||||
struct CEntry
|
||||
{
|
||||
NLMISC::TStringId Name;
|
||||
TType Type;
|
||||
sint Offset;
|
||||
sint Count;
|
||||
|
||||
inline sint stride() const
|
||||
{
|
||||
return Count == 1
|
||||
? s_TypeSize[Type]
|
||||
: ((s_TypeSize[Type] + 15) & ~0xF);
|
||||
}
|
||||
inline sint size() const
|
||||
{
|
||||
return stride() * Count;
|
||||
}
|
||||
inline sint offset(int i) const
|
||||
{
|
||||
return Offset + (stride() * i);
|
||||
}
|
||||
};
|
||||
|
||||
// Push a variable. Returns the byte offset in uniform buffer
|
||||
// Note: Does not check for duplicate names. However, names must be unique
|
||||
sint push(const std::string &name, TType type, sint count = 1);
|
||||
|
||||
inline const CEntry &get(sint i) const { return m_Entries[i]; }
|
||||
inline size_t count() const { return m_Entries.size(); } // Return number of entries
|
||||
inline void clear() { m_Entries.clear(); m_Hash = 0; }
|
||||
|
||||
inline sint size() const { return m_Entries.size() ? (((m_Entries.back().Offset + m_Entries.back().size()) + 15) & ~0xF) : 0; } // Return size of format in bytes
|
||||
inline size_t hash() const { return m_Hash; }
|
||||
|
||||
// Get the offset by entry id (counted from 0 in the order of addition to the format) and index of array
|
||||
inline sint offset(sint entry, sint index = 0) const { m_Entries[entry].offset(index); }
|
||||
|
||||
private:
|
||||
static const sint s_TypeAlignment[];
|
||||
static const sint s_TypeSize[];
|
||||
|
||||
typedef std::vector<CEntry> TEntries;
|
||||
TEntries m_Entries;
|
||||
size_t m_Hash;
|
||||
|
||||
};
|
||||
|
||||
void testUniformBufferFormat(CUniformBufferFormat &ubf);
|
||||
|
||||
} /* namespace NL3D */
|
||||
|
||||
namespace std {
|
||||
|
||||
template <>
|
||||
struct hash<NL3D::CUniformBufferFormat>
|
||||
{
|
||||
size_t operator()(const NL3D::CUniformBufferFormat & v) const { return v.hash(); }
|
||||
};
|
||||
|
||||
} /* namespace std */
|
||||
|
||||
#endif /* #ifndef NL_UNIFORM_BUFFER_FORMAT_H */
|
||||
|
||||
/* end of file */
|
@ -1,83 +0,0 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_BACKGROUND_H
|
||||
#define CL_CSS_BACKGROUND_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_length.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS background info
|
||||
* \date 2021-07-02 11:36 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBackground
|
||||
{
|
||||
public:
|
||||
CSSBackground()
|
||||
:color(NLMISC::CRGBA::Transparent),
|
||||
repeatX(CSS_VALUE_REPEAT), repeatY(CSS_VALUE_REPEAT), attachment(CSS_VALUE_SCROLL),
|
||||
xAnchor(CSS_VALUE_LEFT), yAnchor(CSS_VALUE_TOP),
|
||||
clip(CSS_VALUE_BORDER_BOX), origin(CSS_VALUE_PADDING_BOX), size(CSS_VALUE_AUTO)
|
||||
{}
|
||||
|
||||
void setImage(const std::string &value);
|
||||
void setPosition(const std::string &value);
|
||||
void setSize(const std::string &value);
|
||||
void setRepeat(const std::string &value);
|
||||
void setOrigin(const std::string &value);
|
||||
void setClip(const std::string &value);
|
||||
void setAttachment(const std::string &value);
|
||||
void setColor(const std::string &value);
|
||||
|
||||
public:
|
||||
// TODO: only final layer has color
|
||||
NLMISC::CRGBA color;
|
||||
std::string image;
|
||||
|
||||
CSSValueType repeatX;
|
||||
CSSValueType repeatY;
|
||||
CSSValueType attachment;
|
||||
|
||||
CSSValueType xAnchor;
|
||||
CSSValueType yAnchor;
|
||||
CSSLength xPosition;
|
||||
CSSLength yPosition;
|
||||
|
||||
CSSValueType clip;
|
||||
CSSValueType origin;
|
||||
|
||||
CSSValueType size;
|
||||
CSSLength width;
|
||||
CSSLength height;
|
||||
|
||||
private:
|
||||
void positionFromOne(const std::vector<std::string> &parts);
|
||||
void positionFromTwo(const std::vector<std::string> &parts);
|
||||
void positionFromThree(const std::vector<std::string> &parts);
|
||||
void positionFromFour(const std::vector<std::string> &parts);
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_BACKGROUND_H
|
||||
|
||||
|
@ -1,193 +0,0 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
|
||||
#ifndef NL_CSS_BACKGROUND_RENDERER_H
|
||||
#define NL_CSS_BACKGROUND_RENDERER_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/misc/geom_ext.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_background.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CInterfaceElement;
|
||||
|
||||
/**
|
||||
* \brief Border renderer for GUI classes
|
||||
* \date 2021-06-29 15:17 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBackgroundRenderer
|
||||
{
|
||||
public:
|
||||
// alpha value from parent
|
||||
uint8 CurrentAlpha;
|
||||
|
||||
// TODO: should be moved to CSSBackground
|
||||
sint32 TextureId;
|
||||
|
||||
public:
|
||||
CSSBackgroundRenderer();
|
||||
~CSSBackgroundRenderer();
|
||||
|
||||
// return true if no background is set
|
||||
bool isEmpty() const
|
||||
{
|
||||
return m_Background.image.empty() && m_Background.color.A == 0;
|
||||
}
|
||||
|
||||
void setModulateGlobalColor(bool m) { m_ModulateGlobalColor = m; }
|
||||
|
||||
void updateCoords();
|
||||
void invalidateCoords() { m_Dirty = true; }
|
||||
void invalidateContent() { m_Dirty = true; };
|
||||
|
||||
void clear();
|
||||
void setBackground(const CSSBackground &bg);
|
||||
|
||||
// helper function to change background image
|
||||
void setImage(const std::string &bgtex);
|
||||
void setImageRepeat(bool b);
|
||||
void setImageCover(bool b);
|
||||
|
||||
// helper function to change background color
|
||||
void setColor(const NLMISC::CRGBA &color)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_Background.color = color;
|
||||
}
|
||||
|
||||
NLMISC::CRGBA getColor() const
|
||||
{
|
||||
return m_Background.color;
|
||||
}
|
||||
|
||||
// override painting area to be at least the size of viewport (ie, <html> background)
|
||||
void setFillViewport(bool b) {
|
||||
m_Dirty = true;
|
||||
m_FillViewport = b;
|
||||
}
|
||||
|
||||
void setViewport(CInterfaceElement *root)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_Viewport = root;
|
||||
}
|
||||
|
||||
void setBorderArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_BorderX = x;
|
||||
m_BorderY = y;
|
||||
m_BorderW = w;
|
||||
m_BorderH = h;
|
||||
}
|
||||
|
||||
void setPaddingArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_PaddingX = x;
|
||||
m_PaddingY = y;
|
||||
m_PaddingW = w;
|
||||
m_PaddingH = h;
|
||||
}
|
||||
|
||||
void setContentArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_ContentX = x;
|
||||
m_ContentY = y;
|
||||
m_ContentW = w;
|
||||
m_ContentH = h;
|
||||
}
|
||||
|
||||
// sizes for em, rem units
|
||||
void setFontSize(float rootFontSize, float fontSize)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_RootFontSize = rootFontSize;
|
||||
m_FontSize = fontSize;
|
||||
}
|
||||
|
||||
void draw();
|
||||
|
||||
private:
|
||||
sint32 m_BorderX, m_BorderY, m_BorderW, m_BorderH;
|
||||
sint32 m_PaddingX, m_PaddingY, m_PaddingW, m_PaddingH;
|
||||
sint32 m_ContentX, m_ContentY, m_ContentW, m_ContentH;
|
||||
|
||||
// font size for 'rem'
|
||||
float m_RootFontSize;
|
||||
|
||||
// font size for 'em'
|
||||
float m_FontSize;
|
||||
|
||||
// viewport element for vw,wh,vmin,vmax
|
||||
CInterfaceElement* m_Viewport;
|
||||
|
||||
struct SDrawQueue
|
||||
{
|
||||
sint32 TextureId;
|
||||
NLMISC::CQuadUV Quad;
|
||||
NLMISC::CRGBA Color;
|
||||
};
|
||||
std::vector<SDrawQueue> m_DrawQueue;
|
||||
|
||||
const sint8 m_RenderLayer;
|
||||
bool m_ModulateGlobalColor;
|
||||
// if true, painting area returns area at least the size of viewport (ie, <html> background)
|
||||
bool m_FillViewport;
|
||||
|
||||
// if true, then updateCoords() is called from draw()
|
||||
bool m_Dirty;
|
||||
|
||||
CSSBackground m_Background;
|
||||
|
||||
// get clip area based on background-clip
|
||||
void getPaintingArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const;
|
||||
|
||||
// get positioning area based on background-origin
|
||||
void getPositioningArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const;
|
||||
|
||||
// calculate image size based on background-size
|
||||
void calculateSize(const CSSBackground &bg, sint32 &texW, sint32 &texH) const;
|
||||
|
||||
// calculate image position based on background-position
|
||||
void calculatePosition(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH) const;
|
||||
|
||||
// calculate image tile position, size, count, and spacing based on background-repeat
|
||||
void calculateTiles(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH, sint32 &tilesX, sint32 &tilesY, sint32 &spacingX, sint32 &spacingY) const;
|
||||
|
||||
// position, size, and count for first tile to cover an area
|
||||
void getImageTile(sint32 &tilePos, sint32 &tileSize, sint32 &spacing, sint32 &tiles, sint32 areaPos, sint32 areaSize, CSSValueType repeat) const;
|
||||
|
||||
// push background color to draw queue
|
||||
void buildColorQuads(const CSSBackground &bg);
|
||||
|
||||
// push background image to draw quque
|
||||
void buildImageQuads(const CSSBackground &bg, sint32 textureId);
|
||||
|
||||
}; // CSSBackgroundRenderer
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // NL_CSS_BACKGROUND_RENDERER_H
|
||||
|
||||
|
@ -1,72 +0,0 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_BORDER_H
|
||||
#define CL_CSS_BORDER_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_length.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS border info
|
||||
* \date 2021-07-23 09:51 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBorder
|
||||
{
|
||||
public:
|
||||
CSSBorder()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
CSSBorder(uint width, CSSLineStyle style, NLMISC::CRGBA color)
|
||||
{
|
||||
set(width, style, color);
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
set(CSS_LINE_WIDTH_MEDIUM, CSS_LINE_STYLE_NONE, NLMISC::CRGBA::Transparent);
|
||||
}
|
||||
|
||||
void set(uint width, CSSLineStyle style, NLMISC::CRGBA color)
|
||||
{
|
||||
Width.setFloatValue(width, "px");
|
||||
Style = style;
|
||||
Color = color;
|
||||
}
|
||||
|
||||
bool empty() const
|
||||
{
|
||||
return Style == CSS_LINE_STYLE_NONE || Style == CSS_LINE_STYLE_HIDDEN
|
||||
|| Width.getFloat() == 0;
|
||||
}
|
||||
|
||||
CSSLength Width;
|
||||
CSSLineStyle Style;
|
||||
NLMISC::CRGBA Color;
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_BORDER_H
|
||||
|
||||
|
@ -1,76 +0,0 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2021 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_LENGTH_H
|
||||
#define CL_CSS_LENGTH_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS types used in GUI classes
|
||||
* \date 2021-07-02 11:36 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
|
||||
class CSSLength
|
||||
{
|
||||
public:
|
||||
enum Kind {
|
||||
Auto, Relative, Fixed
|
||||
};
|
||||
|
||||
CSSLength(float value = 0, CSSUnitType unit = CSS_UNIT_NONE, Kind kind = Auto)
|
||||
: m_Value(value), m_Unit(unit), m_Kind(Auto)
|
||||
{}
|
||||
|
||||
void setAuto() { m_Kind = Auto; }
|
||||
bool parseValue(const std::string &value, bool allowPercent = true, bool allowNegative = false);
|
||||
void setFloatValue(float f, const std::string &unit);
|
||||
|
||||
float getValue() const;
|
||||
float getFloat() const { return m_Value; }
|
||||
|
||||
bool isPercent() const { return m_Unit == CSS_UNIT_PERCENT; }
|
||||
|
||||
bool isAuto() const { return m_Kind == Auto; }
|
||||
bool isRelative() const { return m_Kind == Relative; }
|
||||
|
||||
// % uses relValue
|
||||
// em uses emSize
|
||||
// rem uses remSize
|
||||
// vw,vh,vi,vb,vmin,vmax uses vwSize/vhSize
|
||||
float calculate(uint32 relValue, uint32 emSize, uint32 remSize, uint32 vwSize, uint32 whSize) const;
|
||||
|
||||
CSSUnitType getUnit() const { return m_Unit; }
|
||||
|
||||
std::string toString() const;
|
||||
|
||||
private:
|
||||
void setUnit(const std::string &unit);
|
||||
|
||||
float m_Value;
|
||||
CSSUnitType m_Unit;
|
||||
Kind m_Kind;
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_LENGTH_H
|
||||
|
||||
|
@ -1,83 +0,0 @@
|
||||
// NeL - MMORPG Framework <https://wiki.ryzom.dev/>
|
||||
// Copyright (C) 2020 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef NLMISC_DEEP_PTR_H
|
||||
#define NLMISC_DEEP_PTR_H
|
||||
|
||||
#include <nel/misc/types_nl.h>
|
||||
|
||||
namespace NLMISC {
|
||||
|
||||
/// Pointer template with deep copy and move semantics
|
||||
template<class T>
|
||||
class CDeepPtr
|
||||
{
|
||||
public:
|
||||
NL_FORCE_INLINE CDeepPtr() : m(NULL) { } //< Null
|
||||
NL_FORCE_INLINE ~CDeepPtr() { delete m; }
|
||||
|
||||
NL_FORCE_INLINE CDeepPtr(const CDeepPtr &p) : m(p.m ? new T(*p) : NULL) { } //< Copy operator
|
||||
NL_FORCE_INLINE CDeepPtr &operator=(const CDeepPtr &p) { if (p.m) { if (!m) m = new T(*p); else *m = *p; } else { delete m; m = NULL; } return *this; } //< Copy operator
|
||||
|
||||
#ifdef NL_CPP14
|
||||
NL_FORCE_INLINE CDeepPtr(CDeepPtr &&p) noexcept : m(p.m) { p.m = NULL; } //< Move operator
|
||||
NL_FORCE_INLINE CDeepPtr &operator=(CDeepPtr &&p) noexcept { delete m; m = p.m; p.m = NULL; return *this; } //< Move operator
|
||||
#endif
|
||||
|
||||
NL_FORCE_INLINE CDeepPtr(T *p) : m(p) { } //< Initializer
|
||||
NL_FORCE_INLINE CDeepPtr &operator=(T *p) { delete m; m = p; return *this; } //< Initializer
|
||||
|
||||
NL_FORCE_INLINE bool operator==(const CDeepPtr &p) const { return /* (m == p.m) || */ (m && p.m && *m == *p); }
|
||||
NL_FORCE_INLINE bool operator!=(const CDeepPtr &p) const { return !(*this == p); }
|
||||
|
||||
NL_FORCE_INLINE bool operator==(const T *p) const { return (m == p) || (m && p && *m == *p); }
|
||||
NL_FORCE_INLINE bool operator!=(const T *p) const { return !(*this == p); }
|
||||
|
||||
NL_FORCE_INLINE bool operator==(const T &p) const { return (m == &p) || (m && *m == p); }
|
||||
NL_FORCE_INLINE bool operator!=(const T &p) const { return !(*this == p); }
|
||||
|
||||
NL_FORCE_INLINE bool operator==(long int p) const { return (*this == (const T *)(ptrdiff_t)p); } //< == NULL
|
||||
NL_FORCE_INLINE bool operator!=(long int p) const { return (*this != (const T *)(ptrdiff_t)p); } //< != NULL
|
||||
|
||||
NL_FORCE_INLINE bool operator==(int p) const { return (*this == (const T *)(ptrdiff_t)p); } //< == 0
|
||||
NL_FORCE_INLINE bool operator!=(int p) const { return (*this != (const T *)(ptrdiff_t)p); } //< != 0
|
||||
|
||||
#ifdef NL_CPP14
|
||||
NL_FORCE_INLINE bool operator==(nullptr_t p) const { return (*this == (const T *)(ptrdiff_t)p); } //< == nullptr
|
||||
NL_FORCE_INLINE bool operator!=(nullptr_t p) const { return (*this != (const T *)(ptrdiff_t)p); } //< != nullptr
|
||||
#endif
|
||||
|
||||
NL_FORCE_INLINE T &operator*() { return *m; }
|
||||
NL_FORCE_INLINE const T &operator*() const { return *m; }
|
||||
NL_FORCE_INLINE T *operator->() { return m; }
|
||||
NL_FORCE_INLINE const T *operator->() const { return m; }
|
||||
|
||||
NL_FORCE_INLINE operator bool() const { return m; }
|
||||
NL_FORCE_INLINE bool operator!() const { return !m; }
|
||||
|
||||
NL_FORCE_INLINE T *ptr() { return m; }
|
||||
NL_FORCE_INLINE const T *ptr() const { return m; }
|
||||
|
||||
private:
|
||||
T *m;
|
||||
|
||||
};
|
||||
|
||||
} /* namespace NLMISC */
|
||||
|
||||
#endif /* #ifndef NLMISC_DEEP_PTR_H */
|
||||
|
||||
/* end of file */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue