mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-18 02:52:10 +00:00
Compare commits
2187 Commits
v2.0.0-rc
...
v2.3.1-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ae89f7d9b | ||
|
|
9e0df24b9a | ||
|
|
173788b25c | ||
|
|
721ce0cb6d | ||
|
|
739e4b374e | ||
|
|
cdb22a3505 | ||
|
|
5973cc2fbc | ||
|
|
3d2b332c01 | ||
|
|
90b59ff7d6 | ||
|
|
612d5c42b4 | ||
|
|
e5d6de9080 | ||
|
|
eb92a2ddde | ||
|
|
05adf5f9c9 | ||
|
|
05181779d1 | ||
|
|
53440fd390 | ||
|
|
9ae20024aa | ||
|
|
202875a4bb | ||
|
|
2e63ce2196 | ||
|
|
0ac0263542 | ||
|
|
ce67aa43ea | ||
|
|
6f44ca576c | ||
|
|
4cab501f14 | ||
|
|
255d7153f4 | ||
|
|
31aa149a1e | ||
|
|
aacbcab468 | ||
|
|
b84fe5561a | ||
|
|
f4d2d050f5 | ||
|
|
f27a40d29b | ||
|
|
e5ea789b89 | ||
|
|
b16d3a2f4a | ||
|
|
468c8492b6 | ||
|
|
dc3da3df8f | ||
|
|
13bd1a4d68 | ||
|
|
282cdd111a | ||
|
|
c86eb27675 | ||
|
|
3f1e4ca55a | ||
|
|
d93671bbc7 | ||
|
|
8f3ed9bc7b | ||
|
|
4cdbe5fa30 | ||
|
|
7bf79a1a6c | ||
|
|
42e820e505 | ||
|
|
3461577d57 | ||
|
|
f51b887928 | ||
|
|
0cd3030c53 | ||
|
|
c7e66637f9 | ||
|
|
611e1f7718 | ||
|
|
40123e1c0d | ||
|
|
6996d317df | ||
|
|
85e66de431 | ||
|
|
68110eeecc | ||
|
|
1ef427f661 | ||
|
|
3d16c7f4c8 | ||
|
|
43a84842e8 | ||
|
|
c8a27715a9 | ||
|
|
7f27c9b37b | ||
|
|
daeedc51a3 | ||
|
|
bb5dbd7bfd | ||
|
|
c8b3899c5e | ||
|
|
16d7a1458f | ||
|
|
823d27b128 | ||
|
|
69520bdf97 | ||
|
|
e44ec1f27b | ||
|
|
50e64d5961 | ||
|
|
c00502638c | ||
|
|
46c0f19cc9 | ||
|
|
11e2c054d0 | ||
|
|
46af00aa01 | ||
|
|
41659bcfda | ||
|
|
365376ec2e | ||
|
|
521d2470eb | ||
|
|
571adb9a3f | ||
|
|
18f17a10c9 | ||
|
|
821e5ac597 | ||
|
|
e9e069c167 | ||
|
|
83f578ae50 | ||
|
|
37d8bec3e1 | ||
|
|
203dfa1b84 | ||
|
|
5202fe30ea | ||
|
|
a729d7ce35 | ||
|
|
0726819547 | ||
|
|
3e186d2393 | ||
|
|
fd0d716f53 | ||
|
|
03d25c97b4 | ||
|
|
f45155a966 | ||
|
|
bf52f5b4bf | ||
|
|
65e3bcc183 | ||
|
|
686a9bd44a | ||
|
|
b410154cb3 | ||
|
|
eba08bf727 | ||
|
|
41000db5bc | ||
|
|
c6399f6ee0 | ||
|
|
dbc6cb74b6 | ||
|
|
f595f40d1d | ||
|
|
b785f40fb0 | ||
|
|
c4e8b26f17 | ||
|
|
0fa846823a | ||
|
|
ea7cfbc050 | ||
|
|
e348923283 | ||
|
|
7f8f807500 | ||
|
|
a332167e5a | ||
|
|
b39893078a | ||
|
|
da2d2a07b5 | ||
|
|
f8ef9bc363 | ||
|
|
a8141ef360 | ||
|
|
10687085ee | ||
|
|
3f7d5b85fd | ||
|
|
cc3a3fcd76 | ||
|
|
a8f1220f19 | ||
|
|
c2eda0b0fa | ||
|
|
d80bb1cfc9 | ||
|
|
e276e15b1b | ||
|
|
414c8a36e4 | ||
|
|
aeea69706e | ||
|
|
9988d0a1f8 | ||
|
|
5707f8f4a5 | ||
|
|
bec5d9ea57 | ||
|
|
9d79eefc28 | ||
|
|
9be13033a0 | ||
|
|
168dd08042 | ||
|
|
392a3dd7ab | ||
|
|
661d7b88da | ||
|
|
3696d43590 | ||
|
|
51d844af2c | ||
|
|
88fb8187d9 | ||
|
|
fa70582ed1 | ||
|
|
bd1281954d | ||
|
|
6ed9b08173 | ||
|
|
d60fcb0d11 | ||
|
|
7cbd0d2b74 | ||
|
|
dec21efe7f | ||
|
|
5c42b396e0 | ||
|
|
8aec3f69e5 | ||
|
|
4ec16fd714 | ||
|
|
3e3a07a5b8 | ||
|
|
b9cce6c179 | ||
|
|
961b73c6be | ||
|
|
d4536fae9c | ||
|
|
fe4a72ec94 | ||
|
|
95b4334bf7 | ||
|
|
0010dc6bb4 | ||
|
|
a136ba1837 | ||
|
|
f62e9a71e2 | ||
|
|
dd6b0fb793 | ||
|
|
1aee8a0783 | ||
|
|
5041e0772e | ||
|
|
043abb4389 | ||
|
|
3a81a8f358 | ||
|
|
b259ee22b3 | ||
|
|
52e4d2af82 | ||
|
|
d8683fc045 | ||
|
|
1471276580 | ||
|
|
e13ec786d5 | ||
|
|
c72e8a24f1 | ||
|
|
be3bbfa39e | ||
|
|
ecfe53e488 | ||
|
|
b72e28c116 | ||
|
|
6da7fe62a2 | ||
|
|
153c478c35 | ||
|
|
3ecca6116d | ||
|
|
9569841091 | ||
|
|
13e4b54754 | ||
|
|
ec44768eb9 | ||
|
|
0999cb057d | ||
|
|
d0bf8746d0 | ||
|
|
33dc7bc1f2 | ||
|
|
25785abfe0 | ||
|
|
f44e90b884 | ||
|
|
db926cd9f4 | ||
|
|
8fff1caa39 | ||
|
|
5c2fe4da87 | ||
|
|
a60b65367a | ||
|
|
3b2fa4469a | ||
|
|
15f0d2a514 | ||
|
|
e52eb480d6 | ||
|
|
5a173bb1c4 | ||
|
|
b2ed8ff53e | ||
|
|
4e59b0abc6 | ||
|
|
0242e9462b | ||
|
|
4b893b40a1 | ||
|
|
8b1277b554 | ||
|
|
7f8f36bf40 | ||
|
|
3900042280 | ||
|
|
9bf5cf0fb9 | ||
|
|
dec18f5c70 | ||
|
|
b3598ea3cc | ||
|
|
83b28ff2d6 | ||
|
|
dd549a6c52 | ||
|
|
91ffc79c7b | ||
|
|
f978a584fe | ||
|
|
32aa040287 | ||
|
|
90e00eec66 | ||
|
|
7d7308feb2 | ||
|
|
aac6e2a3d0 | ||
|
|
57e5f5c4c4 | ||
|
|
40be2d5ef0 | ||
|
|
81c14f60b6 | ||
|
|
522aa8e585 | ||
|
|
21f25b9365 | ||
|
|
fc33a680d1 | ||
|
|
1441da246b | ||
|
|
e8f5b374b2 | ||
|
|
50fe1f7312 | ||
|
|
736da49da4 | ||
|
|
b01ccc8def | ||
|
|
340da6fa85 | ||
|
|
beaaa09f2f | ||
|
|
9444d61bb6 | ||
|
|
b8c5ddd0ee | ||
|
|
a2f87dc980 | ||
|
|
be7312f153 | ||
|
|
50fb11dddc | ||
|
|
3d64af917a | ||
|
|
63bca8ab64 | ||
|
|
5df4275c18 | ||
|
|
895b21fb2b | ||
|
|
9565f39c7a | ||
|
|
6423d521cd | ||
|
|
17586cf0a1 | ||
|
|
c0da25f036 | ||
|
|
4ae4634976 | ||
|
|
c93e321ef0 | ||
|
|
23ee612c03 | ||
|
|
9d1ab72c29 | ||
|
|
26306d586a | ||
|
|
49ae4ab8f7 | ||
|
|
2dacde5b3b | ||
|
|
7ecd3e7f0c | ||
|
|
659a65f27f | ||
|
|
6b9ce834e1 | ||
|
|
5335357f4c | ||
|
|
06cc09b62a | ||
|
|
54748aee1c | ||
|
|
f970bf8160 | ||
|
|
add22fb695 | ||
|
|
062d922beb | ||
|
|
5246fc4c0c | ||
|
|
057ba55c87 | ||
|
|
aebd2f5305 | ||
|
|
8579885e8e | ||
|
|
d613662ef7 | ||
|
|
23c148fb74 | ||
|
|
6fca6f527c | ||
|
|
4909c517d1 | ||
|
|
61aa5d2c09 | ||
|
|
59c2a453ab | ||
|
|
67ccaa3f6c | ||
|
|
4545132a0d | ||
|
|
09d309ee9c | ||
|
|
6e47c0c175 | ||
|
|
65936b34c1 | ||
|
|
0d61ae87ed | ||
|
|
e6eb80e003 | ||
|
|
56b6e0742e | ||
|
|
625a946e25 | ||
|
|
b5c164fae6 | ||
|
|
b88b1e4819 | ||
|
|
4339bd308e | ||
|
|
8b43ecca30 | ||
|
|
4425f91caa | ||
|
|
cee7041b4d | ||
|
|
3b3406a375 | ||
|
|
d654408bed | ||
|
|
9c8736f416 | ||
|
|
87c0719b32 | ||
|
|
502cee88ee | ||
|
|
0b98094dac | ||
|
|
e924a04fb8 | ||
|
|
6c9cbfc848 | ||
|
|
b051870245 | ||
|
|
917b638227 | ||
|
|
575d543299 | ||
|
|
5f989c81d1 | ||
|
|
e3ffc39316 | ||
|
|
00277ac4b0 | ||
|
|
2a19372ca0 | ||
|
|
80b234a369 | ||
|
|
8a7fa6918d | ||
|
|
1556523ca1 | ||
|
|
60ac0a514e | ||
|
|
6c22b0c86f | ||
|
|
9711b65736 | ||
|
|
a67436ee7e | ||
|
|
85bce2ac33 | ||
|
|
2d7259623f | ||
|
|
285bbeceb7 | ||
|
|
ebc072b141 | ||
|
|
aec877c7e0 | ||
|
|
c0ba405a64 | ||
|
|
320cd87f0b | ||
|
|
7af9802688 | ||
|
|
1f2b320b94 | ||
|
|
58c2ee4f06 | ||
|
|
1f41e18d7f | ||
|
|
21c69a99e6 | ||
|
|
eba2e0af78 | ||
|
|
fd5b6f88ab | ||
|
|
54d6f9f0de | ||
|
|
c6b8664c8e | ||
|
|
05a0703120 | ||
|
|
778deab033 | ||
|
|
a91fa2a40c | ||
|
|
294d07a2a0 | ||
|
|
b7e0abc5f5 | ||
|
|
2490564f7f | ||
|
|
9110dd51dc | ||
|
|
57a6f61349 | ||
|
|
020d31d600 | ||
|
|
7c76bb754a | ||
|
|
95e96712f1 | ||
|
|
ff9ce434a2 | ||
|
|
dfdf9a3159 | ||
|
|
b998ddd1bd | ||
|
|
8f143a1764 | ||
|
|
795945376c | ||
|
|
1c58c933e2 | ||
|
|
7a548ca7fb | ||
|
|
aebc01abfc | ||
|
|
24784bae9a | ||
|
|
3b658cba3b | ||
|
|
d4809b58b8 | ||
|
|
1a5b238ba4 | ||
|
|
2ce2facb0e | ||
|
|
bd67bd8270 | ||
|
|
3f60a23718 | ||
|
|
a008014ab0 | ||
|
|
43b2acba36 | ||
|
|
3e48390cee | ||
|
|
75dd55fcf6 | ||
|
|
41ff632d28 | ||
|
|
cc525608e9 | ||
|
|
4d25037614 | ||
|
|
0cc495b425 | ||
|
|
0c4f778ddb | ||
|
|
b0b6e000f2 | ||
|
|
2fbfb70994 | ||
|
|
9b18c82bfb | ||
|
|
f0384e7bc3 | ||
|
|
92b31a6435 | ||
|
|
13225c817a | ||
|
|
fe0f6497ad | ||
|
|
37244cce95 | ||
|
|
406ccadd06 | ||
|
|
48ec9edc51 | ||
|
|
ca68aa6d2b | ||
|
|
92972879f5 | ||
|
|
b4f1ef06a2 | ||
|
|
108a5b8344 | ||
|
|
2ee934a7ee | ||
|
|
f6bfad9de1 | ||
|
|
b0872aaba9 | ||
|
|
7c5dee1eda | ||
|
|
2db5cae51f | ||
|
|
72fa3fbb26 | ||
|
|
df3fe1491a | ||
|
|
e9e661a9db | ||
|
|
8a89c159db | ||
|
|
11cc964352 | ||
|
|
500d1835a8 | ||
|
|
1f08ec6072 | ||
|
|
d71b1b57e2 | ||
|
|
45dd04c899 | ||
|
|
319827daec | ||
|
|
89a225a0e1 | ||
|
|
693cf5f2f4 | ||
|
|
d77ef4c8a3 | ||
|
|
afb1d3df6f | ||
|
|
dad7320f4b | ||
|
|
9b9c9ba569 | ||
|
|
d40be52f18 | ||
|
|
c4c670c995 | ||
|
|
c5c3fdc321 | ||
|
|
78a09d9be6 | ||
|
|
241d097d2e | ||
|
|
4925f65fed | ||
|
|
cb7aef10ec | ||
|
|
b9729f872a | ||
|
|
7c60219ab1 | ||
|
|
569814d77c | ||
|
|
f5d58bb9f0 | ||
|
|
9e304d0743 | ||
|
|
be2d193117 | ||
|
|
0dd356a3a7 | ||
|
|
e9eb6f9d95 | ||
|
|
a91ee67ac7 | ||
|
|
038b25627e | ||
|
|
86f4c3a014 | ||
|
|
81f1cd4532 | ||
|
|
a37d648370 | ||
|
|
2304e6a9cd | ||
|
|
a4f35e0291 | ||
|
|
8c4b7456c1 | ||
|
|
a9d426a3dc | ||
|
|
461d42635f | ||
|
|
e4d8c2e440 | ||
|
|
7fe421b1b3 | ||
|
|
12d5ffb8e5 | ||
|
|
aef4dba512 | ||
|
|
440d44340d | ||
|
|
66830d2344 | ||
|
|
940800b059 | ||
|
|
a499695c93 | ||
|
|
032e6c8580 | ||
|
|
9913736b41 | ||
|
|
84d3bd2b48 | ||
|
|
5bf1596d65 | ||
|
|
7d72db562f | ||
|
|
d37f1b6a81 | ||
|
|
e787666605 | ||
|
|
2cc5b3e335 | ||
|
|
6938d2da7f | ||
|
|
9f4cd93817 | ||
|
|
0d3683c3e1 | ||
|
|
07634d2ba2 | ||
|
|
2a6c15d15a | ||
|
|
672c115c61 | ||
|
|
09f2ee467b | ||
|
|
54a5ac9235 | ||
|
|
e2b16f527a | ||
|
|
66cab434b8 | ||
|
|
d1c2368eee | ||
|
|
2c12515035 | ||
|
|
f4ebf9830c | ||
|
|
e2f59f02e4 | ||
|
|
1f74b6b78a | ||
|
|
ee7ebda584 | ||
|
|
bfe0778421 | ||
|
|
2349ea063d | ||
|
|
c456d38b5c | ||
|
|
35b4aadfda | ||
|
|
423172484e | ||
|
|
06d36b9718 | ||
|
|
cd2df8f5ef | ||
|
|
cd2077ebaf | ||
|
|
d9c27f3dee | ||
|
|
e395ba18ad | ||
|
|
0628a9444c | ||
|
|
7d2a12aa3c | ||
|
|
addade1216 | ||
|
|
f5849e5c08 | ||
|
|
ee85cda2bb | ||
|
|
2c8c3449c6 | ||
|
|
9c5c7c4c92 | ||
|
|
2e9cb000f5 | ||
|
|
3369a394e6 | ||
|
|
bae3a1e6b8 | ||
|
|
2b5fd7ad2e | ||
|
|
eb57036dab | ||
|
|
eb38474bb2 | ||
|
|
5a39e6beda | ||
|
|
69c2143804 | ||
|
|
1bce6a24d2 | ||
|
|
8cdc9c02df | ||
|
|
3a3f695967 | ||
|
|
bbf17e919e | ||
|
|
228b50f858 | ||
|
|
035b047fef | ||
|
|
c90b3a2cce | ||
|
|
b795708852 | ||
|
|
0e2582e0bb | ||
|
|
e2e06e5e89 | ||
|
|
6d467c8f16 | ||
|
|
205056b572 | ||
|
|
4dca5b6a7c | ||
|
|
5b3109945e | ||
|
|
8dd9e64af8 | ||
|
|
9c10f8cbc5 | ||
|
|
8e38ac234f | ||
|
|
7a40ebda66 | ||
|
|
97ec03692c | ||
|
|
443034553b | ||
|
|
2f8fa3fec2 | ||
|
|
0a3cbabae6 | ||
|
|
74df3a450b | ||
|
|
abcd6e7847 | ||
|
|
61a68fb497 | ||
|
|
5ed855aeef | ||
|
|
672a829cdb | ||
|
|
ee07700aa7 | ||
|
|
d54c139cdb | ||
|
|
697fc5b8d3 | ||
|
|
23372478a8 | ||
|
|
822de5ce29 | ||
|
|
9e53b079c6 | ||
|
|
cc81be0992 | ||
|
|
4b33c31106 | ||
|
|
5f16371672 | ||
|
|
5c0afd5e84 | ||
|
|
69df9420c1 | ||
|
|
82bc52cbcc | ||
|
|
7cc46619a5 | ||
|
|
a987f03aeb | ||
|
|
3612d8e4eb | ||
|
|
b149cb0682 | ||
|
|
267d81e9cc | ||
|
|
e97d9f5f17 | ||
|
|
7a50acb607 | ||
|
|
dd4a3ec042 | ||
|
|
5e42120df5 | ||
|
|
32efc176d9 | ||
|
|
1fd21371b1 | ||
|
|
ecd91bcf01 | ||
|
|
85d46d2979 | ||
|
|
c577fdd792 | ||
|
|
a519ea34a5 | ||
|
|
f14232396a | ||
|
|
a2bf46fc53 | ||
|
|
b1de545ff9 | ||
|
|
f20a4d705a | ||
|
|
503475f063 | ||
|
|
4aafa7a90d | ||
|
|
831608e6d6 | ||
|
|
c4d47abc52 | ||
|
|
7f913f1cc2 | ||
|
|
66a71d4db0 | ||
|
|
14502673da | ||
|
|
1b8f798d3b | ||
|
|
4b0977d306 | ||
|
|
40928a5d22 | ||
|
|
a66bc06b2d | ||
|
|
4376f8ba3c | ||
|
|
69b645d5c8 | ||
|
|
ac56fffffd | ||
|
|
9890ab333c | ||
|
|
428cba9a25 | ||
|
|
3662b5139c | ||
|
|
1857849cba | ||
|
|
19dae83e40 | ||
|
|
bf9cce4800 | ||
|
|
b4c17d6e97 | ||
|
|
8698f75144 | ||
|
|
c2bbc5b450 | ||
|
|
0cb458db89 | ||
|
|
2e9c30883b | ||
|
|
d91ef31bac | ||
|
|
d4e5a61efd | ||
|
|
60dac5f1f4 | ||
|
|
9fc51ba22e | ||
|
|
b5a7a917bf | ||
|
|
3a114a5d7f | ||
|
|
a3984a706e | ||
|
|
075565f4f4 | ||
|
|
67681c971f | ||
|
|
64ac0ecd41 | ||
|
|
19e5ee3f42 | ||
|
|
00cf9be46e | ||
|
|
b832370421 | ||
|
|
70aa20b9ee | ||
|
|
d31546b2ae | ||
|
|
c11b28d910 | ||
|
|
8210d76449 | ||
|
|
df19e91845 | ||
|
|
f6dc9c1ab4 | ||
|
|
ef978b848c | ||
|
|
8c4a65e3e1 | ||
|
|
c163d11fdb | ||
|
|
9fe905c47d | ||
|
|
933b282c53 | ||
|
|
d869a61ac1 | ||
|
|
61efef9e88 | ||
|
|
9db74c05c0 | ||
|
|
ec752671da | ||
|
|
98be94a729 | ||
|
|
2fbeb75ced | ||
|
|
eb0d0386a0 | ||
|
|
c2a1a8c39b | ||
|
|
6bd2355a69 | ||
|
|
41c14281e5 | ||
|
|
0001d62dc8 | ||
|
|
5dac629712 | ||
|
|
782adafc39 | ||
|
|
ed45bf425e | ||
|
|
45221a2bea | ||
|
|
41c3a059a7 | ||
|
|
cf0c5624a1 | ||
|
|
5e79e9196f | ||
|
|
d753292823 | ||
|
|
df6516e3e3 | ||
|
|
f1cba23976 | ||
|
|
5dee7297cf | ||
|
|
5c7cb0578f | ||
|
|
ef8649910f | ||
|
|
17d08aec41 | ||
|
|
658669d103 | ||
|
|
b65d6172cc | ||
|
|
72d8c82927 | ||
|
|
08eeed9c72 | ||
|
|
affa9068f0 | ||
|
|
d14571edfe | ||
|
|
588f42e2e2 | ||
|
|
1e75686221 | ||
|
|
6590ccf168 | ||
|
|
d27630cec7 | ||
|
|
0d9534bcf1 | ||
|
|
9b439ff5a2 | ||
|
|
0bc2444079 | ||
|
|
65e5b193e1 | ||
|
|
207d08476c | ||
|
|
8c4794de38 | ||
|
|
288a367e4d | ||
|
|
6d7260a6e9 | ||
|
|
f91b520bb8 | ||
|
|
e1477e642c | ||
|
|
61ebddf9b8 | ||
|
|
00811ee5bb | ||
|
|
108eeaed0a | ||
|
|
41450b3a64 | ||
|
|
2efee60a22 | ||
|
|
a16b8e4963 | ||
|
|
37653324fa | ||
|
|
c6f4ad0efa | ||
|
|
420d0c2f74 | ||
|
|
ce453ccd58 | ||
|
|
30db093c73 | ||
|
|
c3542ce014 | ||
|
|
4c56a3b3f5 | ||
|
|
19c4a4dc3f | ||
|
|
671d3d8f70 | ||
|
|
70931e5321 | ||
|
|
b02e8bb7f3 | ||
|
|
83f8b6b625 | ||
|
|
6825cf6d52 | ||
|
|
c432d2c537 | ||
|
|
61b86b976e | ||
|
|
9bf6a44608 | ||
|
|
7c1122d06f | ||
|
|
4eaef65a79 | ||
|
|
44b6a6a6b6 | ||
|
|
d8bb1786e5 | ||
|
|
2e4576b201 | ||
|
|
4ebbadb2a6 | ||
|
|
4dc6530391 | ||
|
|
e6467d4872 | ||
|
|
69154652ba | ||
|
|
9e2054278f | ||
|
|
61464de50b | ||
|
|
c73513ee0d | ||
|
|
818025635a | ||
|
|
7a788c29fd | ||
|
|
8d09a502f0 | ||
|
|
e36d9f9dbf | ||
|
|
d1fbf8b7bf | ||
|
|
6a3e56b103 | ||
|
|
afdf33e402 | ||
|
|
558cd53b4a | ||
|
|
1aff64d28c | ||
|
|
b8b60a3eb1 | ||
|
|
bd9dc7764f | ||
|
|
79a5a9b5f8 | ||
|
|
be0effc068 | ||
|
|
9227ebbff8 | ||
|
|
07148536db | ||
|
|
70d7768868 | ||
|
|
ff9178b830 | ||
|
|
9ead771405 | ||
|
|
144cdcdc6d | ||
|
|
312ddaa8fb | ||
|
|
c150bbf61c | ||
|
|
2a0de19e4e | ||
|
|
c17b52ad66 | ||
|
|
5c29ec73ee | ||
|
|
e4f8489b4a | ||
|
|
1ba7f18b90 | ||
|
|
345ab82f91 | ||
|
|
1558edf827 | ||
|
|
0f3fbd4390 | ||
|
|
ec213e98fb | ||
|
|
4900c546f9 | ||
|
|
38fb975d2a | ||
|
|
74d9a88480 | ||
|
|
464b89c3a7 | ||
|
|
69bab18a8e | ||
|
|
1d71ed5ade | ||
|
|
bc698a88df | ||
|
|
ecc16bfabf | ||
|
|
538db07127 | ||
|
|
2b8cdfe547 | ||
|
|
af2e1e1873 | ||
|
|
7c650c16f8 | ||
|
|
bc3347a538 | ||
|
|
36a5a14507 | ||
|
|
22e410f82d | ||
|
|
9a0ce083a4 | ||
|
|
b5f443c64c | ||
|
|
fbfbb0932f | ||
|
|
fc2335e554 | ||
|
|
398a91d548 | ||
|
|
e5bd7379a8 | ||
|
|
55beb67387 | ||
|
|
d92dfc097c | ||
|
|
30cfc13a3d | ||
|
|
bd0859d35d | ||
|
|
2b109d552c | ||
|
|
2a5371ab62 | ||
|
|
a407feed24 | ||
|
|
3bf935e00d | ||
|
|
1584c883b0 | ||
|
|
d9b4c9d18f | ||
|
|
5e5542d02f | ||
|
|
118266f721 | ||
|
|
c81b743d31 | ||
|
|
e11a121983 | ||
|
|
d9f4e6b8ba | ||
|
|
632eff6a3a | ||
|
|
ddf8eca96e | ||
|
|
93cb0426fd | ||
|
|
0965b92895 | ||
|
|
00825db508 | ||
|
|
16cbaf6180 | ||
|
|
d89520c8ae | ||
|
|
00a44ee48c | ||
|
|
de788a46da | ||
|
|
0aadfb479a | ||
|
|
af61ee38f3 | ||
|
|
2547a23135 | ||
|
|
18652068e3 | ||
|
|
268601a3da | ||
|
|
ad30af74dc | ||
|
|
51916ff058 | ||
|
|
41584cfae3 | ||
|
|
99b6033a1b | ||
|
|
e6f71774fd | ||
|
|
d649472412 | ||
|
|
f9e644bb24 | ||
|
|
c275e84743 | ||
|
|
26368f5d6c | ||
|
|
171a43bdaa | ||
|
|
b01c1a4553 | ||
|
|
afab94f231 | ||
|
|
71b40f9bd5 | ||
|
|
f6ac67e601 | ||
|
|
6587f27086 | ||
|
|
74b6371994 | ||
|
|
fa206896f4 | ||
|
|
fd8792f342 | ||
|
|
dc40071045 | ||
|
|
fdeeb3ad4e | ||
|
|
906923cd24 | ||
|
|
f8b84310d6 | ||
|
|
1d0af13aa3 | ||
|
|
160a0e2aea | ||
|
|
14f77e41fb | ||
|
|
f1ef4abca8 | ||
|
|
db16cacc38 | ||
|
|
d022d7ba69 | ||
|
|
7bd6863525 | ||
|
|
911baa84b2 | ||
|
|
a9a6f45f08 | ||
|
|
99e4879f8b | ||
|
|
70dfdb95a9 | ||
|
|
24522fdaf7 | ||
|
|
dc491166a8 | ||
|
|
d839c52114 | ||
|
|
e12ca90f62 | ||
|
|
c5ba8be49f | ||
|
|
4c28dd5ba0 | ||
|
|
6e473fd5fa | ||
|
|
f8c0cdfb11 | ||
|
|
2bba98d180 | ||
|
|
d41dd784ef | ||
|
|
873a6f5c6e | ||
|
|
b82d13a5a9 | ||
|
|
a49460d8d8 | ||
|
|
bb9a980b4b | ||
|
|
2e9cad67ed | ||
|
|
493431ba55 | ||
|
|
b463e0cba9 | ||
|
|
c83f9c6a87 | ||
|
|
b8e4ce75e0 | ||
|
|
be8bf54884 | ||
|
|
831743997d | ||
|
|
088c8f5a8b | ||
|
|
5e7c8678fb | ||
|
|
1fede3fa34 | ||
|
|
fcc3da5800 | ||
|
|
ae5d7ea996 | ||
|
|
992dbf825d | ||
|
|
03d884d91c | ||
|
|
5e541f84e4 | ||
|
|
0ec13678e4 | ||
|
|
7b167bbe7b | ||
|
|
55a351d5f0 | ||
|
|
a6e53707ef | ||
|
|
0ca5e944b7 | ||
|
|
41ff66297b | ||
|
|
5b1cfa4529 | ||
|
|
98b396c9ea | ||
|
|
961254b81d | ||
|
|
7494825038 | ||
|
|
85cf995458 | ||
|
|
5d2e7e4dc4 | ||
|
|
df902d13f5 | ||
|
|
2bc9c8d239 | ||
|
|
00a3e78f8a | ||
|
|
ab7ef4f55e | ||
|
|
dd2f8af68b | ||
|
|
328ea469cb | ||
|
|
43353a6036 | ||
|
|
43af6d221b | ||
|
|
80a0489044 | ||
|
|
f9814370bb | ||
|
|
fa57842a0f | ||
|
|
189960af17 | ||
|
|
26e3ac68ce | ||
|
|
d2c2c2ec9b | ||
|
|
185fb3cb26 | ||
|
|
830c1ac928 | ||
|
|
44efbc7bae | ||
|
|
a4289139b0 | ||
|
|
14d49b738f | ||
|
|
a4e37d428e | ||
|
|
b80e3636c6 | ||
|
|
ad5fcb704b | ||
|
|
740f115790 | ||
|
|
674c8d03f7 | ||
|
|
e607dbb5d2 | ||
|
|
b2494220f6 | ||
|
|
85bbbee8bc | ||
|
|
ccbda78477 | ||
|
|
a359c05b8d | ||
|
|
2e4a2a26e6 | ||
|
|
12fb6db8ef | ||
|
|
fcc5489911 | ||
|
|
b4a7721cc0 | ||
|
|
3bbee6cf5f | ||
|
|
b6da4727b1 | ||
|
|
b2e142c1bb | ||
|
|
589340c8ff | ||
|
|
5145707801 | ||
|
|
2d92ea6320 | ||
|
|
c21b044a9c | ||
|
|
229a826aa7 | ||
|
|
4e74aaf144 | ||
|
|
2eed82ed81 | ||
|
|
107cd3edb0 | ||
|
|
32547c8c3b | ||
|
|
cc92abf8b5 | ||
|
|
d1161ea0e7 | ||
|
|
b29edeb282 | ||
|
|
f88ce30ccd | ||
|
|
f3dabe0ae5 | ||
|
|
2c2bebdc93 | ||
|
|
0187e1baf3 | ||
|
|
279b3ded14 | ||
|
|
a3ac1fc4f4 | ||
|
|
98135299e8 | ||
|
|
dc3938e0ea | ||
|
|
393e2f4027 | ||
|
|
d41c0a812b | ||
|
|
ed9ba7dcb7 | ||
|
|
ee1bd704ef | ||
|
|
d7cf4b2274 | ||
|
|
35157c9421 | ||
|
|
9e1b856e99 | ||
|
|
9f4d9fb463 | ||
|
|
d54d81e89d | ||
|
|
c1df01fd8e | ||
|
|
1c686b3c04 | ||
|
|
07c7e2f910 | ||
|
|
7a26dde977 | ||
|
|
36970dd9a2 | ||
|
|
e6880a468b | ||
|
|
724d8a12b6 | ||
|
|
3e7e4df7ce | ||
|
|
e78d50f733 | ||
|
|
59b756acb8 | ||
|
|
f76683e90e | ||
|
|
ae6fadda4d | ||
|
|
5054ee8508 | ||
|
|
532dcae37a | ||
|
|
f00bdfeca8 | ||
|
|
9ee61bb3dd | ||
|
|
0cfa5f47fe | ||
|
|
fa11957c17 | ||
|
|
2332caa84c | ||
|
|
3d70bdc3e1 | ||
|
|
36f2df3339 | ||
|
|
6e05d9ef84 | ||
|
|
5a8612eb63 | ||
|
|
2577b9b3a6 | ||
|
|
0b671e8852 | ||
|
|
19107b5869 | ||
|
|
da7eea49c9 | ||
|
|
fd3ed419c2 | ||
|
|
4ee6d636c7 | ||
|
|
242a36a262 | ||
|
|
107551f7b4 | ||
|
|
c199730004 | ||
|
|
715e8e1c32 | ||
|
|
562dc76ab0 | ||
|
|
31a5f0d523 | ||
|
|
a2e5332eef | ||
|
|
c7febad548 | ||
|
|
d0868d6711 | ||
|
|
de24d0ac2f | ||
|
|
b3be5bb161 | ||
|
|
cc9f29c463 | ||
|
|
1c498664a5 | ||
|
|
8c51f3e693 | ||
|
|
c443951f30 | ||
|
|
e8d4291e02 | ||
|
|
5f450923c9 | ||
|
|
14ecfac592 | ||
|
|
8a7cc79129 | ||
|
|
5fb0e01943 | ||
|
|
70c4961df3 | ||
|
|
2205ad0069 | ||
|
|
1d1df4b0a5 | ||
|
|
51290a853d | ||
|
|
4034ffea18 | ||
|
|
824f9efb69 | ||
|
|
58d524d75f | ||
|
|
06c809c598 | ||
|
|
2af5aa56d8 | ||
|
|
f7e9792a5d | ||
|
|
03a9d3f5ca | ||
|
|
42577feeba | ||
|
|
af893267e6 | ||
|
|
658c4f096e | ||
|
|
321c209a74 | ||
|
|
8337db208a | ||
|
|
69c3661876 | ||
|
|
921e4cef2e | ||
|
|
b5b837cf41 | ||
|
|
ed538b0307 | ||
|
|
dd8812cd04 | ||
|
|
b18a24920b | ||
|
|
4ca541fbc7 | ||
|
|
532a2d36b5 | ||
|
|
dc83549aa1 | ||
|
|
7b3e0cc637 | ||
|
|
0c190860e2 | ||
|
|
93477bc2ec | ||
|
|
41236140ca | ||
|
|
2767f180b6 | ||
|
|
dedc3cbae0 | ||
|
|
991802a3a7 | ||
|
|
3cd8b82dfb | ||
|
|
eb908d0aa7 | ||
|
|
478e2a68a0 | ||
|
|
1924d9b7ae | ||
|
|
6473a0d2c8 | ||
|
|
c0533eba6f | ||
|
|
00418626cb | ||
|
|
c7a68b0f26 | ||
|
|
f4acdd775e | ||
|
|
cbc97f4ae7 | ||
|
|
fbf4281c36 | ||
|
|
a29d535bc4 | ||
|
|
700f6e3841 | ||
|
|
ea99eeb51f | ||
|
|
c217b53285 | ||
|
|
09ee5fbc2c | ||
|
|
01bc090914 | ||
|
|
2e64cc2f7e | ||
|
|
82ce8c94b4 | ||
|
|
2e86306118 | ||
|
|
4d762c4e91 | ||
|
|
1fc64c55a8 | ||
|
|
f620879eb5 | ||
|
|
6ed68342e0 | ||
|
|
fd0b2547f2 | ||
|
|
118e14d788 | ||
|
|
1ebbb3958c | ||
|
|
b342cc6e20 | ||
|
|
592402ea46 | ||
|
|
23a31bcad9 | ||
|
|
3d4ca06423 | ||
|
|
4a4f27e599 | ||
|
|
fd933a8d8a | ||
|
|
3c3ac1a1cb | ||
|
|
0cf7efc46c | ||
|
|
e0faedc891 | ||
|
|
6a4cf24e6b | ||
|
|
da2a1b1ff8 | ||
|
|
ecb0e7ea68 | ||
|
|
cac455e696 | ||
|
|
02f5bc0d22 | ||
|
|
8b58719938 | ||
|
|
ddef92ccd6 | ||
|
|
85e9d32660 | ||
|
|
251887004f | ||
|
|
7a5746b1ae | ||
|
|
ad76d0a50a | ||
|
|
ccee8efe72 | ||
|
|
6b30984e1f | ||
|
|
bee7188599 | ||
|
|
5f3ff22218 | ||
|
|
a90880193f | ||
|
|
4f496dd3b4 | ||
|
|
93f4c2bd4d | ||
|
|
7a3bafc162 | ||
|
|
818948af53 | ||
|
|
00d274fc29 | ||
|
|
0b582686d1 | ||
|
|
75ed8d69fe | ||
|
|
0aea1c0b4e | ||
|
|
43aad9f345 | ||
|
|
702f121e2c | ||
|
|
478fdbc041 | ||
|
|
8bb7ea7cfc | ||
|
|
569d4e6307 | ||
|
|
98ba252862 | ||
|
|
d57cfa2a99 | ||
|
|
620e857908 | ||
|
|
46c333a310 | ||
|
|
723df03d74 | ||
|
|
22613f498a | ||
|
|
bd754287ac | ||
|
|
8a2f5cd773 | ||
|
|
4c48b281fd | ||
|
|
fde250fbe3 | ||
|
|
f16038190d | ||
|
|
66e5cbd8e8 | ||
|
|
8f08b587c6 | ||
|
|
a2eea5fe2b | ||
|
|
b0be4bcf61 | ||
|
|
a0c0964b8c | ||
|
|
a7f58f39cf | ||
|
|
f5270603b2 | ||
|
|
6385a4d170 | ||
|
|
8b33119640 | ||
|
|
fe01886c5c | ||
|
|
d380b59774 | ||
|
|
02abd177b5 | ||
|
|
b75f22bb22 | ||
|
|
9ab3107304 | ||
|
|
5c11aed655 | ||
|
|
65d4d31bb3 | ||
|
|
688b7697b3 | ||
|
|
8eece6a66f | ||
|
|
e9f9cf5c0a | ||
|
|
66af62a194 | ||
|
|
d802379a9a | ||
|
|
fcd6f3375c | ||
|
|
b6c1adbb5d | ||
|
|
b9eb1625f9 | ||
|
|
f99116d251 | ||
|
|
d9473fd384 | ||
|
|
c336ae660b | ||
|
|
1b1288c435 | ||
|
|
0e2b30fddf | ||
|
|
b75473482b | ||
|
|
1df52936f2 | ||
|
|
d1bc4e1e9f | ||
|
|
206c6228a5 | ||
|
|
06ba32e117 | ||
|
|
4f82fee592 | ||
|
|
3064973b15 | ||
|
|
f2beb56981 | ||
|
|
9718d13c21 | ||
|
|
f2e65f9d00 | ||
|
|
c51f6edc54 | ||
|
|
893b8cba16 | ||
|
|
302b40af22 | ||
|
|
880081226a | ||
|
|
74cf736903 | ||
|
|
68997f260f | ||
|
|
16340fd6b6 | ||
|
|
6cdede8e10 | ||
|
|
cef15842bb | ||
|
|
a66fc86e20 | ||
|
|
61331ce113 | ||
|
|
fab7eaab49 | ||
|
|
64153c7968 | ||
|
|
22dc0b1212 | ||
|
|
c68e640d03 | ||
|
|
f3fddcb225 | ||
|
|
ec591dcef1 | ||
|
|
2253ab304a | ||
|
|
a3de7cf0bd | ||
|
|
b488fdecec | ||
|
|
10b9928506 | ||
|
|
105a8444e9 | ||
|
|
5ec8f51bd4 | ||
|
|
1bd197df3a | ||
|
|
330ac879c1 | ||
|
|
8188963e20 | ||
|
|
7179797d55 | ||
|
|
26a55a1267 | ||
|
|
2ea2ab08de | ||
|
|
f8698d89a4 | ||
|
|
727a3887c5 | ||
|
|
70579f9159 | ||
|
|
4c955e5cb5 | ||
|
|
cd4a1e01ae | ||
|
|
bc03b95a78 | ||
|
|
51b5305ca4 | ||
|
|
e315586125 | ||
|
|
7f391bc1af | ||
|
|
2b95ef4e3b | ||
|
|
7834f78c90 | ||
|
|
ac80575b28 | ||
|
|
599b0e09eb | ||
|
|
5f8da1086b | ||
|
|
72f324f147 | ||
|
|
77b8272c6a | ||
|
|
3e520c713c | ||
|
|
a90cc292e9 | ||
|
|
4e19c305ae | ||
|
|
3375b53141 | ||
|
|
f7ee8642e9 | ||
|
|
18547fa6a1 | ||
|
|
8da0d1bd86 | ||
|
|
b73d3866b5 | ||
|
|
a96aad1fda | ||
|
|
9b68c695d7 | ||
|
|
d4580e7a32 | ||
|
|
adba9a0280 | ||
|
|
5b1bc5c0ef | ||
|
|
99a0facfb3 | ||
|
|
ab5aeb49d2 | ||
|
|
b32f2b2237 | ||
|
|
9a5c43e24f | ||
|
|
333ed4c34d | ||
|
|
4c1a42e2e8 | ||
|
|
e62d6a3b68 | ||
|
|
bb009eaa99 | ||
|
|
67cc143916 | ||
|
|
604ded5ff0 | ||
|
|
f0e773f891 | ||
|
|
d1dfcbe168 | ||
|
|
091ab68811 | ||
|
|
02438e25bc | ||
|
|
2f55dd7cfe | ||
|
|
83eb1366c7 | ||
|
|
3e13ee049d | ||
|
|
4d5944090f | ||
|
|
8219b55392 | ||
|
|
efa6fc9b8c | ||
|
|
00eeab93fb | ||
|
|
cbc04e944c | ||
|
|
42c10fc6d8 | ||
|
|
f3b2dc26f5 | ||
|
|
91fbd1a417 | ||
|
|
aa1f1dfcc0 | ||
|
|
cf1039be36 | ||
|
|
b9432f4247 | ||
|
|
8ff64f3751 | ||
|
|
35ecb8ab4a | ||
|
|
1cf90efe03 | ||
|
|
5115ceb8f8 | ||
|
|
ba1752680c | ||
|
|
1c68e19aca | ||
|
|
6575bd1ead | ||
|
|
f2f827c175 | ||
|
|
71304368d0 | ||
|
|
5d1583db85 | ||
|
|
47ec9b9b06 | ||
|
|
babb84c70a | ||
|
|
4b739539a4 | ||
|
|
44e53c90f0 | ||
|
|
862acea2af | ||
|
|
3a43050ad1 | ||
|
|
d7789282b9 | ||
|
|
fb19c6a904 | ||
|
|
54abbe85be | ||
|
|
0a45e3348a | ||
|
|
c52b845c36 | ||
|
|
27ec1980bc | ||
|
|
543e85019a | ||
|
|
5635266fbb | ||
|
|
9d8d156fec | ||
|
|
add157d104 | ||
|
|
3b73ad875d | ||
|
|
559d5fe931 | ||
|
|
8bb8b30053 | ||
|
|
c9606a9458 | ||
|
|
2533e95004 | ||
|
|
1af51d66c6 | ||
|
|
ef28de69a5 | ||
|
|
25b1ec6843 | ||
|
|
8cc7a8c8a3 | ||
|
|
fac32eca7d | ||
|
|
97c60be44b | ||
|
|
dbea5f8229 | ||
|
|
b122c173fe | ||
|
|
5da8a8f3bc | ||
|
|
579a79d545 | ||
|
|
46d93bbace | ||
|
|
5ec57d694a | ||
|
|
b4df3c9093 | ||
|
|
5b1b2884bf | ||
|
|
0a19a7cdee | ||
|
|
3f54fd0a26 | ||
|
|
d74a2990ec | ||
|
|
44d8c51d2e | ||
|
|
1acb6833b8 | ||
|
|
b41eb80216 | ||
|
|
ba8270d1c0 | ||
|
|
0962ce9b8b | ||
|
|
133c5347f6 | ||
|
|
ca2db3a60f | ||
|
|
d39799c2c3 | ||
|
|
f361943443 | ||
|
|
053d560ccc | ||
|
|
5a9f4f9a89 | ||
|
|
ad4725342a | ||
|
|
50b7c9fca1 | ||
|
|
901734147e | ||
|
|
50089ded0a | ||
|
|
95887780b9 | ||
|
|
a4f990fdd6 | ||
|
|
9cf92aa28f | ||
|
|
3e26852aec | ||
|
|
7d8d33a787 | ||
|
|
a6a22b9a95 | ||
|
|
df8f7e82c8 | ||
|
|
3caca2215d | ||
|
|
41d1b0d3c8 | ||
|
|
8636434c6b | ||
|
|
187011d0f7 | ||
|
|
d13709b3dd | ||
|
|
b331830604 | ||
|
|
2708beb42b | ||
|
|
d2bda93852 | ||
|
|
5178fee0f3 | ||
|
|
776901005c | ||
|
|
8ce992b640 | ||
|
|
719f09e2f2 | ||
|
|
30cfa9a931 | ||
|
|
484c43ca4d | ||
|
|
ae07f17ca0 | ||
|
|
a602eee441 | ||
|
|
09c115afb3 | ||
|
|
c0ddf68070 | ||
|
|
f3fcbe74b8 | ||
|
|
08caf3862b | ||
|
|
ebc573d956 | ||
|
|
2a61ceae5b | ||
|
|
449785e138 | ||
|
|
c899c3ea6e | ||
|
|
e6eda3e7d0 | ||
|
|
4f9e946dfb | ||
|
|
89cf7f87bf | ||
|
|
3b1c4f9ee4 | ||
|
|
bc4682cd52 | ||
|
|
f30fb2477b | ||
|
|
3e6835bbc5 | ||
|
|
16e532f73e | ||
|
|
508d0e6334 | ||
|
|
5e576887c8 | ||
|
|
565619a216 | ||
|
|
771373e6aa | ||
|
|
3e9e6913e3 | ||
|
|
42261eccbe | ||
|
|
ac5eaa3829 | ||
|
|
b38b9132f4 | ||
|
|
4c78d687a0 | ||
|
|
a7b8dfa2df | ||
|
|
3666f84e65 | ||
|
|
db7f7aa79a | ||
|
|
ca35ba4107 | ||
|
|
717fe35ebd | ||
|
|
f11eb34b59 | ||
|
|
ceab043989 | ||
|
|
b3b0961d91 | ||
|
|
31be67926e | ||
|
|
b7bba13789 | ||
|
|
5f576aac6a | ||
|
|
342d7f3f70 | ||
|
|
2e017a73cf | ||
|
|
917a8fe477 | ||
|
|
cdb38d918b | ||
|
|
c17c5c8205 | ||
|
|
7ab985e468 | ||
|
|
f38825a538 | ||
|
|
ceeebda1dc | ||
|
|
3d45414b71 | ||
|
|
e3b1e30387 | ||
|
|
6e9257c8ac | ||
|
|
1088d0a6c7 | ||
|
|
4b46bfcbdf | ||
|
|
c14b6e7ccd | ||
|
|
c59cb0ed64 | ||
|
|
65157da466 | ||
|
|
cf6d9c77ff | ||
|
|
661efa733e | ||
|
|
d9dcbc8e44 | ||
|
|
2348928b25 | ||
|
|
88ca0bc5b9 | ||
|
|
ae31f4fb1f | ||
|
|
983f1a827e | ||
|
|
be5bc632ad | ||
|
|
6169b4fa2a | ||
|
|
4bb6525c4f | ||
|
|
dc943eddaf | ||
|
|
425d9c97e4 | ||
|
|
9731a17f0f | ||
|
|
bb1f9cf1b4 | ||
|
|
01fe959283 | ||
|
|
c0ce64ce55 | ||
|
|
59a79040d2 | ||
|
|
c8eb3bf084 | ||
|
|
5aaea09885 | ||
|
|
763717da2a | ||
|
|
296b234fe6 | ||
|
|
588ffa1b32 | ||
|
|
a52ce89925 | ||
|
|
09afb390dd | ||
|
|
cc8d90c224 | ||
|
|
990a1867e3 | ||
|
|
5cf16b9b5d | ||
|
|
fac94a46da | ||
|
|
ca251c7090 | ||
|
|
736d50e623 | ||
|
|
66a7235e25 | ||
|
|
36a380b9c6 | ||
|
|
84bfed7de6 | ||
|
|
630797ece9 | ||
|
|
68178cacd8 | ||
|
|
ee819bd8dd | ||
|
|
fb032cd85f | ||
|
|
eb195da546 | ||
|
|
2cc44feb66 | ||
|
|
8097becedd | ||
|
|
09672ea90c | ||
|
|
72a797de08 | ||
|
|
e73593c102 | ||
|
|
5b6fa0b770 | ||
|
|
1c43b2902c | ||
|
|
78ea8d84f3 | ||
|
|
338f89a15b | ||
|
|
89d04ab9e9 | ||
|
|
17c0abbe32 | ||
|
|
01ffeb6b86 | ||
|
|
7422c7957f | ||
|
|
9fbab1407f | ||
|
|
4a1d382964 | ||
|
|
6ecf6bdbd7 | ||
|
|
ab55d4eefc | ||
|
|
0bf2b9dcff | ||
|
|
fada134391 | ||
|
|
e14428897e | ||
|
|
5b241a3982 | ||
|
|
f2d1429a01 | ||
|
|
cc90d79190 | ||
|
|
7736cd1b39 | ||
|
|
7b38376e4e | ||
|
|
608e6375e6 | ||
|
|
6f3c701a32 | ||
|
|
dd3af0cfdd | ||
|
|
cc1d7cfe04 | ||
|
|
6ed920f8e2 | ||
|
|
9f73262b43 | ||
|
|
9d37d1a084 | ||
|
|
407ea045a2 | ||
|
|
14467c0e8d | ||
|
|
29278be729 | ||
|
|
0e15cccbc5 | ||
|
|
201d188ef1 | ||
|
|
08800dc9e3 | ||
|
|
77eb02e722 | ||
|
|
b23223c0de | ||
|
|
44bb6cd3fc | ||
|
|
a5f6f1cd82 | ||
|
|
483d3f9c56 | ||
|
|
9cb183c606 | ||
|
|
cac3d396c7 | ||
|
|
769ec051ee | ||
|
|
9245a87293 | ||
|
|
98c540d3c9 | ||
|
|
1992623a50 | ||
|
|
2663b60281 | ||
|
|
ec94b9086f | ||
|
|
71aa30f41f | ||
|
|
53b08f213b | ||
|
|
cffa0033cb | ||
|
|
d52e2cc1b2 | ||
|
|
cfceb873c2 | ||
|
|
d13a86bec2 | ||
|
|
bc328b71c7 | ||
|
|
66709ab582 | ||
|
|
a5d2fa1aed | ||
|
|
5bb42bc0d5 | ||
|
|
d6f89393d7 | ||
|
|
393ff7426b | ||
|
|
fcf4140daa | ||
|
|
165f9d3f0c | ||
|
|
48b8b7d105 | ||
|
|
8c39fd3d49 | ||
|
|
60dc43bbf7 | ||
|
|
09eea5e556 | ||
|
|
b9da340fc5 | ||
|
|
b17dae8fb1 | ||
|
|
9323f6357d | ||
|
|
48e99dab6a | ||
|
|
78ff7f34b9 | ||
|
|
cedb939f4e | ||
|
|
ebed03ea92 | ||
|
|
ff265745c6 | ||
|
|
97d1745e5a | ||
|
|
23d597a302 | ||
|
|
df2006858d | ||
|
|
0bcd897f75 | ||
|
|
5b6232b084 | ||
|
|
1b367b7df9 | ||
|
|
6dea7b444e | ||
|
|
735d179f1a | ||
|
|
8709f22597 | ||
|
|
548a998c2f | ||
|
|
e5f34a7f46 | ||
|
|
de4af30921 | ||
|
|
0e3a841f03 | ||
|
|
d989da6047 | ||
|
|
e755d781e1 | ||
|
|
17492c1e5b | ||
|
|
fff4da56bd | ||
|
|
65fc14209d | ||
|
|
ed41e3e5ce | ||
|
|
c552aae8a7 | ||
|
|
d7bc7fa2b2 | ||
|
|
23eb055cb5 | ||
|
|
8d9ec11fe9 | ||
|
|
473c7fb3ef | ||
|
|
cc950f2016 | ||
|
|
04c65b750d | ||
|
|
746a2bfb2d | ||
|
|
711ec0506b | ||
|
|
11146b14cd | ||
|
|
69f521fdcf | ||
|
|
38cd758e94 | ||
|
|
9d3d242453 | ||
|
|
3d3633f110 | ||
|
|
7d679fdc7d | ||
|
|
96effc179b | ||
|
|
99d4d0957a | ||
|
|
1d2c28f929 | ||
|
|
c28fd550f3 | ||
|
|
48c56e12ae | ||
|
|
661183b48f | ||
|
|
a7924a662e | ||
|
|
24ae14f1d8 | ||
|
|
dda540fa5d | ||
|
|
f1b91b706e | ||
|
|
a98d3a21c0 | ||
|
|
d39947d204 | ||
|
|
eb8f9bba4f | ||
|
|
ec3c48d95e | ||
|
|
2c42465352 | ||
|
|
e4d282c6a4 | ||
|
|
eeae83f445 | ||
|
|
8b8c0cad2a | ||
|
|
47965b02d3 | ||
|
|
8aac37de6a | ||
|
|
d5d3bab82e | ||
|
|
74bb4eb284 | ||
|
|
ad99c30bca | ||
|
|
ad6ea3fb06 | ||
|
|
587e839397 | ||
|
|
265bc8453c | ||
|
|
4f70057727 | ||
|
|
375816d331 | ||
|
|
6ca1741e83 | ||
|
|
c8216accfd | ||
|
|
603e3e76b0 | ||
|
|
833340ebbc | ||
|
|
30498ccb7b | ||
|
|
fe051522d9 | ||
|
|
7f9f90c32c | ||
|
|
97d4ead854 | ||
|
|
5c3e094450 | ||
|
|
a453d153ea | ||
|
|
92b933f274 | ||
|
|
2b4cd6577b | ||
|
|
d87734ebfa | ||
|
|
3927f5adf8 | ||
|
|
09ffca1243 | ||
|
|
f31a9f802b | ||
|
|
adb2d33c92 | ||
|
|
cb8866b478 | ||
|
|
158c71f05e | ||
|
|
a141e4fbf7 | ||
|
|
d4c0a8b982 | ||
|
|
4de618ad1f | ||
|
|
7364b38592 | ||
|
|
36550f1fc5 | ||
|
|
394cf6c981 | ||
|
|
05010b79db | ||
|
|
11240b4ae5 | ||
|
|
78d72632f7 | ||
|
|
7d4402cea1 | ||
|
|
5d5f6074e0 | ||
|
|
3894f2cd37 | ||
|
|
aa6a6876ed | ||
|
|
f6d4f5be32 | ||
|
|
5b0ddbd5f7 | ||
|
|
e750727743 | ||
|
|
415bedef94 | ||
|
|
8d5fdf9122 | ||
|
|
220213e846 | ||
|
|
07d79376d3 | ||
|
|
82c90666da | ||
|
|
044a1c4fc5 | ||
|
|
1afc1372bc | ||
|
|
53a3e86de3 | ||
|
|
5e842eb31f | ||
|
|
e3c1716d7c | ||
|
|
5165515167 | ||
|
|
fc929ebb17 | ||
|
|
09f7412e19 | ||
|
|
4ebcc97dc5 | ||
|
|
7ccda83200 | ||
|
|
40ce542ffa | ||
|
|
372a525f2e | ||
|
|
4e25217927 | ||
|
|
2c5478ee96 | ||
|
|
5b5cd478c2 | ||
|
|
a219ebe229 | ||
|
|
ee17002a50 | ||
|
|
63ebebf4a0 | ||
|
|
0921b6d99d | ||
|
|
a3d08e010d | ||
|
|
c179a57725 | ||
|
|
9e3969b61c | ||
|
|
5cc83b9835 | ||
|
|
60cf1b48cc | ||
|
|
328f74ed81 | ||
|
|
a1e2267fdf | ||
|
|
3e6d2d0f45 | ||
|
|
e55a8e7858 | ||
|
|
3638c05270 | ||
|
|
5a607ccc5e | ||
|
|
db688e0cf4 | ||
|
|
b2b63b296d | ||
|
|
f244aed9c0 | ||
|
|
445dc2b0f1 | ||
|
|
f4bb5a6c20 | ||
|
|
50039afb66 | ||
|
|
be69554d34 | ||
|
|
22444137e8 | ||
|
|
40ac544dce | ||
|
|
65e007cb41 | ||
|
|
4f9c730705 | ||
|
|
0ba4181a06 | ||
|
|
b34ac2bda3 | ||
|
|
d1e7bb2762 | ||
|
|
751d51637b | ||
|
|
c30ffb1895 | ||
|
|
1ff5424819 | ||
|
|
97eec47be6 | ||
|
|
7d1fb381e4 | ||
|
|
3757295b95 | ||
|
|
2a8b39acd4 | ||
|
|
2bf54878f7 | ||
|
|
0c63dd4bd0 | ||
|
|
a7d2ae0450 | ||
|
|
bd8c2ffaeb | ||
|
|
0b6a1d3636 | ||
|
|
83346aaffa | ||
|
|
a68fc86c4e | ||
|
|
d1b9ef427e | ||
|
|
a2218ac99c | ||
|
|
2012fab758 | ||
|
|
bf79a93e1b | ||
|
|
91e775b1b4 | ||
|
|
bcf45a332e | ||
|
|
cd4de6be7e | ||
|
|
2eb1adb719 | ||
|
|
c6065d54fc | ||
|
|
2a5e260b31 | ||
|
|
748ae2e7a6 | ||
|
|
302e5b1220 | ||
|
|
6b50098813 | ||
|
|
59fc8bda31 | ||
|
|
52e9e03a0b | ||
|
|
83522c67ee | ||
|
|
e0089dfe9f | ||
|
|
70495a3bf9 | ||
|
|
6dc8b28529 | ||
|
|
13e18d1d65 | ||
|
|
2acd858bf3 | ||
|
|
12c4ff0d93 | ||
|
|
4dd7d79d76 | ||
|
|
01b16814ad | ||
|
|
364d91bd56 | ||
|
|
bf956dfbe3 | ||
|
|
f136f04cfd | ||
|
|
0d886a133f | ||
|
|
e73638af59 | ||
|
|
9a260010fc | ||
|
|
7082e945b1 | ||
|
|
0286c36f42 | ||
|
|
fa7a11fa7f | ||
|
|
6b44a031be | ||
|
|
fe58a84908 | ||
|
|
bcf4c29028 | ||
|
|
a16a1e9307 | ||
|
|
fd315ee199 | ||
|
|
7bbffaa996 | ||
|
|
ad8cec26af | ||
|
|
b8a9c22404 | ||
|
|
a4cfc14a7e | ||
|
|
c36ba2b8a1 | ||
|
|
98a243c302 | ||
|
|
724762bbc8 | ||
|
|
dcabdb8b77 | ||
|
|
cbda70ae73 | ||
|
|
61952610df | ||
|
|
8ed2911db8 | ||
|
|
ef5bae9910 | ||
|
|
e6ed93f0c6 | ||
|
|
9ff0e9335f | ||
|
|
8b8a70fffa | ||
|
|
fc38c4c8c1 | ||
|
|
8eb69b053f | ||
|
|
83c50b2ad1 | ||
|
|
aaaa4f884e | ||
|
|
bb5e2af509 | ||
|
|
b85c146499 | ||
|
|
d22cd9cb58 | ||
|
|
e96527b2fe | ||
|
|
ade20222a5 | ||
|
|
74775c93b1 | ||
|
|
7b6b5a3f81 | ||
|
|
7d5ab6456f | ||
|
|
143d8c4a8d | ||
|
|
b1a06e80b3 | ||
|
|
68945e07e8 | ||
|
|
c5d417ed89 | ||
|
|
cfe21e5e34 | ||
|
|
f0f5c3bbe9 | ||
|
|
3510158cd8 | ||
|
|
783570ebf6 | ||
|
|
b5bf6aed6f | ||
|
|
abb62ca180 | ||
|
|
c992c7066e | ||
|
|
579cc9781d | ||
|
|
5fd819d4e5 | ||
|
|
55ed305392 | ||
|
|
e423a78eec | ||
|
|
1532a74f87 | ||
|
|
4b2a09bd07 | ||
|
|
f24c7229a9 | ||
|
|
f83dd4f0a7 | ||
|
|
99c7b856fe | ||
|
|
5e2f145c34 | ||
|
|
e83c7653cd | ||
|
|
1c256247b4 | ||
|
|
b83e16dbdd | ||
|
|
b40853af94 | ||
|
|
7236d6cdbf | ||
|
|
4a81fe6134 | ||
|
|
2ee3800a47 | ||
|
|
52ea9c2d32 | ||
|
|
c08126703c | ||
|
|
83a9b2513a | ||
|
|
529c44d8e3 | ||
|
|
a09aa1711a | ||
|
|
543a1e5c37 | ||
|
|
3ca9ffe7aa | ||
|
|
50d646dd41 | ||
|
|
b40e6c0b9a | ||
|
|
58040a6687 | ||
|
|
897411547f | ||
|
|
2eb2648bc4 | ||
|
|
b65967978b | ||
|
|
37b955082c | ||
|
|
6d7071bf2d | ||
|
|
ff10d5f661 | ||
|
|
f490d2ca9f | ||
|
|
4f6c17f568 | ||
|
|
b0bd16e908 | ||
|
|
c36d4ad7c9 | ||
|
|
b4cc526ae4 | ||
|
|
13ddb38119 | ||
|
|
447cc01405 | ||
|
|
7d0fb4f42a | ||
|
|
ab01e7b5c3 | ||
|
|
6601ab9832 | ||
|
|
ea1951b23c | ||
|
|
932371b184 | ||
|
|
ac6b996d13 | ||
|
|
3693f36536 | ||
|
|
00b501e6ab | ||
|
|
afe0da8b62 | ||
|
|
e0711fc41f | ||
|
|
9d1c4e45fb | ||
|
|
55ece2eaf0 | ||
|
|
bb91c23d30 | ||
|
|
e6d74e1754 | ||
|
|
0664a9396b | ||
|
|
bb26424e6a | ||
|
|
2341012914 | ||
|
|
41e1dc29b1 | ||
|
|
a9668728bc | ||
|
|
5e4dd4d847 | ||
|
|
002125fbe4 | ||
|
|
3bf868f99d | ||
|
|
c37a871dd2 | ||
|
|
b4a2abeab8 | ||
|
|
65d6b3d393 | ||
|
|
53cb9dc73d | ||
|
|
5b0e37ed5e | ||
|
|
e77edd9816 | ||
|
|
3010d699b2 | ||
|
|
4b3f91b2e2 | ||
|
|
73e4d79a86 | ||
|
|
71be87ecef | ||
|
|
93d025bfd4 | ||
|
|
f84c3a00e0 | ||
|
|
854ce80a34 | ||
|
|
373318aa4b | ||
|
|
d8cfd523ec | ||
|
|
ea5e0c7e28 | ||
|
|
aec1a40795 | ||
|
|
0b8515ed20 | ||
|
|
f59c70a7fc | ||
|
|
dd8ce17693 | ||
|
|
4bca54873d | ||
|
|
45224eee21 | ||
|
|
230a4aaad8 | ||
|
|
bac86f481c | ||
|
|
03180bbde7 | ||
|
|
09c0faab2c | ||
|
|
9cc6460eeb | ||
|
|
04eec93d0a | ||
|
|
2fe68edc85 | ||
|
|
e29cba2eff | ||
|
|
657954901f | ||
|
|
93ec1dd7ee | ||
|
|
47d154ebdb | ||
|
|
c719f5c95c | ||
|
|
c3f0b5e565 | ||
|
|
d872c62256 | ||
|
|
18e417b34b | ||
|
|
860a41baed | ||
|
|
1c68d58343 | ||
|
|
b6a1a06c25 | ||
|
|
8ff7b0fac2 | ||
|
|
c2320e03a5 | ||
|
|
2acf60a8b5 | ||
|
|
c7206dcb8d | ||
|
|
fc763279d8 | ||
|
|
a0a20349d0 | ||
|
|
40aadbc51c | ||
|
|
adec6b7ebd | ||
|
|
f714b849ad | ||
|
|
6660500b58 | ||
|
|
d747835f56 | ||
|
|
5fa116bd14 | ||
|
|
aabae67534 | ||
|
|
a613280a42 | ||
|
|
0dab437cf7 | ||
|
|
1fce412fa1 | ||
|
|
82cb4ee51c | ||
|
|
4ca0b24002 | ||
|
|
9eaff8ff2f | ||
|
|
12b0a9680f | ||
|
|
d715441c6c | ||
|
|
0b6fc3d389 | ||
|
|
5b549682bd | ||
|
|
a0dae394e7 | ||
|
|
c6205fa806 | ||
|
|
c762a45676 | ||
|
|
d1c84cebd5 | ||
|
|
7707685069 | ||
|
|
1aa5817624 | ||
|
|
ee67b8d762 | ||
|
|
bca67b5baa | ||
|
|
3333a650b7 | ||
|
|
4145f45e42 | ||
|
|
1384b04885 | ||
|
|
bb7d00094b | ||
|
|
9b2a254c5e | ||
|
|
8ccf0edbc2 | ||
|
|
409004d471 | ||
|
|
5ff93fe103 | ||
|
|
b47810435a | ||
|
|
edb9ec9dd7 | ||
|
|
a13152c61f | ||
|
|
f5c5f322d2 | ||
|
|
b18c0c76ae | ||
|
|
aa22b7f220 | ||
|
|
31df3f01ea | ||
|
|
edf2aeb751 | ||
|
|
299e4161ec | ||
|
|
b56bbbff4e | ||
|
|
238bf49f47 | ||
|
|
1a48c0f4b0 | ||
|
|
8070e78c14 | ||
|
|
a4357d1e95 | ||
|
|
e0daca73ab | ||
|
|
2a8cf0ec86 | ||
|
|
c7f0fc86a7 | ||
|
|
1376556b0a | ||
|
|
2431429c49 | ||
|
|
63768cb87f | ||
|
|
aeac07b9c9 | ||
|
|
52cfa48168 | ||
|
|
8c00db6ace | ||
|
|
c72ef08275 | ||
|
|
eeae1b2c7e | ||
|
|
7e85eb0d7d | ||
|
|
63dcf82f15 | ||
|
|
091ec23795 | ||
|
|
a788b6360b | ||
|
|
89d627693f | ||
|
|
9a3671a87f | ||
|
|
76fc7e6d21 | ||
|
|
34ad17bcd2 | ||
|
|
5feefb5efd | ||
|
|
cfba60810f | ||
|
|
5c9b82d6ec | ||
|
|
6c5cd0a31f | ||
|
|
bf646c3f29 | ||
|
|
c1a901e46c | ||
|
|
cd6cd0786f | ||
|
|
b7a0b30578 | ||
|
|
6a28bae6fd | ||
|
|
0af5b47028 | ||
|
|
87e77133ca | ||
|
|
a1d7c8baf8 | ||
|
|
02a4c9069c | ||
|
|
7788c5de22 | ||
|
|
7fdb1a5862 | ||
|
|
ce4a648578 | ||
|
|
5170c0a057 | ||
|
|
9efcacebaa | ||
|
|
1678127e2b | ||
|
|
7ed663135d | ||
|
|
c9c7ae62d6 | ||
|
|
9df712fd9e | ||
|
|
1445d0c501 | ||
|
|
df2674e19d | ||
|
|
217d2bb411 | ||
|
|
6589d2c784 | ||
|
|
12861a6a3d | ||
|
|
9ee33e30df | ||
|
|
1ec239e5b4 | ||
|
|
7e00444726 | ||
|
|
554366d493 | ||
|
|
27f140fb18 | ||
|
|
4590c765c6 | ||
|
|
54653ea316 | ||
|
|
9ae9585e94 | ||
|
|
e79843872b | ||
|
|
1f97147023 | ||
|
|
6dd2409ca5 | ||
|
|
77ec16b4cd | ||
|
|
2ac41509d7 | ||
|
|
5d5f2b4ba1 | ||
|
|
50c42b3c0d | ||
|
|
9c9d175374 | ||
|
|
a4be61e391 | ||
|
|
1ff70be243 | ||
|
|
0b9a6b5fe4 | ||
|
|
13c6914c64 | ||
|
|
08751b0dee | ||
|
|
d6e0cdaf16 | ||
|
|
8e7d1694f9 | ||
|
|
0886610160 | ||
|
|
022c2ff53e | ||
|
|
85d88e68be | ||
|
|
50e8e90dc8 | ||
|
|
012df4d262 | ||
|
|
b2a5543b97 | ||
|
|
35352d48e8 | ||
|
|
b3fff4ffd5 | ||
|
|
0b233f23b5 | ||
|
|
de5fa59153 | ||
|
|
4b1ed5ed92 | ||
|
|
5dcf026ca4 | ||
|
|
2820d95ed6 | ||
|
|
ea13193f70 | ||
|
|
06caebd389 | ||
|
|
9411354139 | ||
|
|
5eacf6a11c | ||
|
|
a12af8ab04 | ||
|
|
dbac0f2919 | ||
|
|
796d445855 | ||
|
|
41504ff0dc | ||
|
|
f94cfe0eb1 | ||
|
|
8060010276 | ||
|
|
f86b45e4fa | ||
|
|
b1c0b40fea | ||
|
|
aa692b815e | ||
|
|
ef73bafeb0 | ||
|
|
f9ecc9d423 | ||
|
|
467691db5e | ||
|
|
d49c8911ab | ||
|
|
68d2a9eedf | ||
|
|
ff53f401be | ||
|
|
06ef58ab3e | ||
|
|
4ee2193408 | ||
|
|
1b6c9aca94 | ||
|
|
03e5da3d23 | ||
|
|
d3d9065ea3 | ||
|
|
cb4b84c4ba | ||
|
|
6af6a42ed9 | ||
|
|
3e232a86e8 | ||
|
|
9a4429f603 | ||
|
|
ae07cf9813 | ||
|
|
2f265ef083 | ||
|
|
a877d642f6 | ||
|
|
99544f9104 | ||
|
|
47ab3a050e | ||
|
|
276e03683f | ||
|
|
eaee170b4c | ||
|
|
b7b3418baf | ||
|
|
accc1a4fc1 | ||
|
|
e0ff96d574 | ||
|
|
d972a68564 | ||
|
|
c083541e0a | ||
|
|
50d00a1d54 | ||
|
|
c4a5a56b3b | ||
|
|
5f92fae965 | ||
|
|
51e88d4e24 | ||
|
|
6ad2d7404e | ||
|
|
0862bb5808 | ||
|
|
b1163084f6 | ||
|
|
b0bfa9165a | ||
|
|
2bbbb7232c | ||
|
|
9b7b11e066 | ||
|
|
985578fbdc | ||
|
|
9b6ceb9e80 | ||
|
|
0459c28596 | ||
|
|
8b1bf13021 | ||
|
|
c14ae13788 | ||
|
|
c47e4654c7 | ||
|
|
06144dfc97 | ||
|
|
246fde0426 | ||
|
|
fd8e1d765b | ||
|
|
3ba57512d0 | ||
|
|
c8915464f5 | ||
|
|
524efcfcca | ||
|
|
6519e850ef | ||
|
|
9f73c01821 | ||
|
|
206a9608ad | ||
|
|
1c56d536cb | ||
|
|
54be09c0a2 | ||
|
|
aece0ce6fc | ||
|
|
0b0205938d | ||
|
|
0a4fcf4e2b | ||
|
|
a1b4e0ce55 | ||
|
|
50f62b6854 | ||
|
|
6e529e285f | ||
|
|
12122f3a5c | ||
|
|
8dc946dc7a | ||
|
|
bfc9008a39 | ||
|
|
aca3b3c56f | ||
|
|
093b163188 | ||
|
|
17fec83e5b | ||
|
|
b1bd30fd5e | ||
|
|
f33c18c488 | ||
|
|
d31748f7c0 | ||
|
|
194ec6b1cd | ||
|
|
966c18cbad | ||
|
|
1d5fb94dd1 | ||
|
|
03cf10f55f | ||
|
|
f7b605088b | ||
|
|
d9dfdbe557 | ||
|
|
d59187d756 | ||
|
|
1701cbc098 | ||
|
|
aa33050301 | ||
|
|
9aad7f8e1d | ||
|
|
b665dfb35d | ||
|
|
0a7f787e30 | ||
|
|
f13dc1fdcd | ||
|
|
95c3255c27 | ||
|
|
b021c615f5 | ||
|
|
9ffe7b07e1 | ||
|
|
31056f2143 | ||
|
|
43d7ac6a14 | ||
|
|
7725fbeb90 | ||
|
|
a764d836e1 | ||
|
|
0dbf610226 | ||
|
|
c161274132 | ||
|
|
f33b46ed32 | ||
|
|
34d3409951 | ||
|
|
f08e75efaa | ||
|
|
5914a3a042 | ||
|
|
79ba045150 | ||
|
|
dd36d5b1ea | ||
|
|
3f83d68e0e | ||
|
|
ac423ce162 | ||
|
|
6369772510 | ||
|
|
7a335590e2 | ||
|
|
01213e58b0 | ||
|
|
ad341ec9e6 | ||
|
|
6e701454fd | ||
|
|
b63c62911a | ||
|
|
f1a667e3e8 | ||
|
|
9467aa228c | ||
|
|
3627a6d986 | ||
|
|
ba3016bc3d | ||
|
|
136313f539 | ||
|
|
c482a62123 | ||
|
|
178b889c68 | ||
|
|
bff2e18b63 | ||
|
|
c3171403d9 | ||
|
|
e2682032b3 | ||
|
|
513335b16b | ||
|
|
a17189f635 | ||
|
|
4029edcc42 | ||
|
|
d69489c2a8 | ||
|
|
4bcc109ce1 | ||
|
|
cc2eb3638d | ||
|
|
81b3e5939d | ||
|
|
96d7139b95 | ||
|
|
00d5b8900d | ||
|
|
04b8ab09a3 | ||
|
|
5daecf3583 | ||
|
|
3e9a46c5bb | ||
|
|
8f77755535 | ||
|
|
98caf561ef | ||
|
|
9b2c2bff1d | ||
|
|
5bceebdd9d | ||
|
|
46b7a2953d | ||
|
|
4c1b66c0b7 | ||
|
|
193062570e | ||
|
|
6920a88e58 | ||
|
|
de5c1c80e3 | ||
|
|
6fa5b5aa26 | ||
|
|
29f9d5dd03 | ||
|
|
b876b0c0c3 | ||
|
|
d140b5bdab | ||
|
|
97ebb35bc9 | ||
|
|
9715ea9b3c | ||
|
|
6e3e733dfb | ||
|
|
058dde29bc | ||
|
|
0c62acd4ed | ||
|
|
7207731a85 | ||
|
|
e40d7780d5 | ||
|
|
b651ff6651 | ||
|
|
af36455579 | ||
|
|
c7683ae614 | ||
|
|
a5cb28d358 | ||
|
|
5ab7de1de6 | ||
|
|
d72c9f923a | ||
|
|
c2f5660afd | ||
|
|
bf15e81bd5 | ||
|
|
12eeb85feb | ||
|
|
85a1ed676e | ||
|
|
335c1713b3 | ||
|
|
61d680e2a6 | ||
|
|
5a56215b54 | ||
|
|
c2e19b65a8 | ||
|
|
44432e2cc4 | ||
|
|
0f9ec47d7e | ||
|
|
4b7a698ee8 | ||
|
|
2c50705e33 | ||
|
|
1ed6298cec | ||
|
|
d2e76212b1 | ||
|
|
3619c1efed | ||
|
|
91d7f07d8f | ||
|
|
004108b4b6 | ||
|
|
4e1b105f17 | ||
|
|
4400220d79 | ||
|
|
fbdea9713f | ||
|
|
efb6cdc6db | ||
|
|
5d20ecc756 | ||
|
|
ddc0ec5b79 | ||
|
|
6d19e2d29c | ||
|
|
872f729d75 | ||
|
|
423f557c34 | ||
|
|
aa209903d5 | ||
|
|
6d1042a587 | ||
|
|
026ba7330e | ||
|
|
f74ae0ed56 | ||
|
|
5c2d3c9112 | ||
|
|
f96696596a | ||
|
|
3591e94a80 | ||
|
|
442b09098b | ||
|
|
f10df349e5 | ||
|
|
e95afd7182 | ||
|
|
e531e2ccc8 | ||
|
|
226450ea6a | ||
|
|
78af750ed9 | ||
|
|
45d523905d | ||
|
|
aec20c8364 | ||
|
|
0369a14ab8 | ||
|
|
315eee3493 | ||
|
|
3b9e1f8eae | ||
|
|
edb57990ef | ||
|
|
d163cea8f8 | ||
|
|
e8018008b3 | ||
|
|
d3c9e4d099 | ||
|
|
0c4a3efaf3 | ||
|
|
3d5fe64fe1 | ||
|
|
5a3366b6f5 | ||
|
|
16276dfb66 | ||
|
|
1807f21a34 | ||
|
|
72029df558 | ||
|
|
88a9ddadb0 | ||
|
|
f3e7ccb159 | ||
|
|
5e56735e79 | ||
|
|
00648b7e18 | ||
|
|
d4d3256ef8 | ||
|
|
2b4520b2df | ||
|
|
1101ed9955 | ||
|
|
7f7dddaeed | ||
|
|
c93e1f317f | ||
|
|
d9944b90be | ||
|
|
a93727e1b6 | ||
|
|
7bb437eb0f | ||
|
|
532b952b99 | ||
|
|
5b8a3b47c7 | ||
|
|
2085af9b02 | ||
|
|
dbfc8351b4 | ||
|
|
add3040f68 | ||
|
|
99b14e050e | ||
|
|
c3277e1b72 | ||
|
|
e5671c505d | ||
|
|
184dbcc690 | ||
|
|
7a0176c295 | ||
|
|
05ca9fdee9 | ||
|
|
98d152a7f5 | ||
|
|
fd53f45257 | ||
|
|
425be2652c | ||
|
|
56e98046cc | ||
|
|
3acd8a2bb4 | ||
|
|
a96852cb83 | ||
|
|
368c465a8c | ||
|
|
c9111b4851 | ||
|
|
8ae358e9bc | ||
|
|
c9137ed678 | ||
|
|
85f8d7adae | ||
|
|
87be98955c | ||
|
|
36de749176 | ||
|
|
c787138aa3 | ||
|
|
c19122f0b7 | ||
|
|
1bb8fad63f | ||
|
|
c6094d48aa | ||
|
|
50d9d889ff | ||
|
|
5d45770745 | ||
|
|
b0abb4c5a6 | ||
|
|
ea2f4437ce | ||
|
|
eb10a35163 | ||
|
|
38d4881643 | ||
|
|
654af8e0e4 | ||
|
|
ec8d91e14f | ||
|
|
eef66022a0 | ||
|
|
fbcf1fe08e | ||
|
|
b56255b4df | ||
|
|
72933ebc85 | ||
|
|
78ee7f5074 | ||
|
|
70427e1c3f | ||
|
|
a5a5c3c408 | ||
|
|
58ee918db3 | ||
|
|
2122fcfc16 | ||
|
|
1ef1c34328 | ||
|
|
1e20121b09 | ||
|
|
e1abde5d7a | ||
|
|
00235ee7b4 | ||
|
|
ba414bb74a | ||
|
|
95585b3539 | ||
|
|
c21e15e732 | ||
|
|
793f2634c3 | ||
|
|
ff5035ffae | ||
|
|
fe914e82f3 | ||
|
|
5c5dd35ea1 | ||
|
|
14fc48ffbd | ||
|
|
ff7faca943 | ||
|
|
9d81245eff | ||
|
|
1dc9caf19d | ||
|
|
b38133fd90 | ||
|
|
23eaf8b8ce | ||
|
|
5bbe09a75c | ||
|
|
aa3ca7759b | ||
|
|
aac141104d | ||
|
|
3f411e26fd | ||
|
|
9960ea5bc2 | ||
|
|
84ae3fc48f | ||
|
|
c663f43925 | ||
|
|
a187356b93 | ||
|
|
88f94c82ea | ||
|
|
1ba0afbc7e | ||
|
|
e82ea69e65 | ||
|
|
7a0c701dea | ||
|
|
a34a25985b | ||
|
|
ed14598eb1 | ||
|
|
6826c38962 | ||
|
|
676a190a77 | ||
|
|
7910e2aecc | ||
|
|
64d0c324c1 | ||
|
|
6ae128b9e7 | ||
|
|
45ef4ae790 | ||
|
|
a980bb6a6a | ||
|
|
9f3bafb04e | ||
|
|
f36c22385b | ||
|
|
a2d24cd67f | ||
|
|
5dfc624e11 | ||
|
|
197ea20d1d | ||
|
|
3b251ca89c | ||
|
|
dcb8d09af6 | ||
|
|
116169ea03 | ||
|
|
6c4ba5c794 |
10
.cursorignore
Normal file
10
.cursorignore
Normal file
@@ -0,0 +1,10 @@
|
||||
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||
deps/
|
||||
build_*/
|
||||
build/
|
||||
localization/
|
||||
sandboxes/
|
||||
resources/*
|
||||
!resources/web/
|
||||
!resources/dailytip
|
||||
!resources/shaders
|
||||
2
.devcontainer/Dockerfile
Normal file
2
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,2 @@
|
||||
ARG BASE_IMAGE
|
||||
FROM ${BASE_IMAGE}
|
||||
@@ -1,7 +1,14 @@
|
||||
{
|
||||
"name": "OrcaSlicer",
|
||||
"image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-20.04",
|
||||
"runArgs": ["--env-file", "/tmp/devcontainer.env"],
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
"PLATFORM": "linux/amd64",
|
||||
"BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04"
|
||||
},
|
||||
"options": ["--platform=linux/amd64"]
|
||||
},
|
||||
"runArgs": ["--platform=linux/amd64"],
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/desktop-lite:1": {
|
||||
"password": "orca"
|
||||
@@ -9,16 +16,13 @@
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"settings": {
|
||||
"cmake.configureArgs": [
|
||||
"-DSLIC3R_GTK=3",
|
||||
"-DBBL_RELEASE_TO_PUBLIC=1",
|
||||
"-DBBL_INTERNAL_TESTING=0",
|
||||
"-DSLIC3R_STATIC=1",
|
||||
"-DCMAKE_PREFIX_PATH=${workspaceFolder}/deps/build/destdir/usr/local"
|
||||
],
|
||||
"cmake.buildToolArgs": [
|
||||
"-l${containerEnv:CORES}"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -40,12 +44,8 @@
|
||||
"otherPortsAttributes": {
|
||||
"onAutoForward": "ignore"
|
||||
},
|
||||
|
||||
"initializeCommand": {
|
||||
"Setup Temporary Env File": "echo \"CORES=`nproc --all`\" > /tmp/devcontainer.env"
|
||||
},
|
||||
"onCreateCommand": {
|
||||
"Set postCreate executable flag": "chmod +x .devcontainer/postCreate.sh"
|
||||
},
|
||||
"postCreateCommand": "sudo .devcontainer/postCreate.sh"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
apt update
|
||||
apt upgrade -y
|
||||
|
||||
build_linux="./build_linux.sh -u"
|
||||
echo "-----------------------------------------"
|
||||
echo "Running BuildLinux.sh with update flag..."
|
||||
echo "Running ${build_linux}..."
|
||||
echo "-----------------------------------------"
|
||||
./BuildLinux.sh -u
|
||||
${build_linux}
|
||||
|
||||
echo "------------------------------"
|
||||
echo "Installing missing packages..."
|
||||
echo "------------------------------"
|
||||
apt install -y libgl1-mesa-dev m4 autoconf libtool
|
||||
apt install -y libgl1-mesa-dev m4 autoconf libtool
|
||||
|
||||
@@ -22,6 +22,7 @@ deps/build-linux/*
|
||||
**/.DS_Store
|
||||
install_*
|
||||
build_*/
|
||||
!build_linux.sh
|
||||
SVG
|
||||
Dockerfile
|
||||
DockerBuild.sh
|
||||
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -0,0 +1,2 @@
|
||||
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
||||
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1,2 +1,3 @@
|
||||
github: SoftFever
|
||||
ko_fi: SoftFever
|
||||
custom: https://paypal.me/softfever3d
|
||||
|
||||
18
.github/dependabot.yml
vendored
Normal file
18
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Only care about major updates to github actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
ignore: # Only suggest major updates for built-in actions
|
||||
- dependency-name: "github/*"
|
||||
update-types: ["version-update:semver-patch", "version-update:semver-minor"]
|
||||
- dependency-name: "actions/*"
|
||||
update-types: ["version-update:semver-patch", "version-update:semver-minor"]
|
||||
# Docker dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
# no support for c/cpp
|
||||
21
.github/pull_request_template.md
vendored
Normal file
21
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Description
|
||||
|
||||
<!--
|
||||
> Please provide a summary of the changes made in this PR. Include details such as:
|
||||
> * What issue does this PR address or fix?
|
||||
> * What new features or enhancements does this PR introduce?
|
||||
> * Are there any breaking changes or dependencies that need to be considered?
|
||||
-->
|
||||
|
||||
# Screenshots/Recordings/Graphs
|
||||
|
||||
<!--
|
||||
> Please attach relevant screenshots to showcase the UI changes.
|
||||
> Please attach images that can help explain the changes.
|
||||
-->
|
||||
|
||||
## Tests
|
||||
|
||||
<!--
|
||||
> Please describe the tests that you have conducted to verify the changes made in this PR.
|
||||
-->
|
||||
76
.github/workflows/build_all.yml
vendored
76
.github/workflows/build_all.yml
vendored
@@ -13,6 +13,7 @@ on:
|
||||
- 'localization/**'
|
||||
- 'resources/**'
|
||||
- ".github/workflows/build_*.yml"
|
||||
- 'flatpak/**'
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
@@ -24,6 +25,10 @@ on:
|
||||
- '**/CMakeLists.txt'
|
||||
- 'version.inc'
|
||||
- ".github/workflows/build_*.yml"
|
||||
- 'build_linux.sh'
|
||||
- 'build_release_vs2022.bat'
|
||||
- 'build_release_macos.sh'
|
||||
- 'flatpak/**'
|
||||
|
||||
workflow_dispatch: # allows for manual dispatch
|
||||
inputs:
|
||||
@@ -44,15 +49,76 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
# Deprecate 20.04appimage
|
||||
# - os: ubuntu-20.04
|
||||
- os: ubuntu-24.04
|
||||
- os: windows-latest
|
||||
- os: macos-12
|
||||
arch: x86_64
|
||||
- os: macos-12
|
||||
- os: macos-14
|
||||
arch: arm64
|
||||
uses: ./.github/workflows/build_check_cache.yml
|
||||
with:
|
||||
os: ${{ matrix.os }}
|
||||
arch: ${{ matrix.arch }}
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
secrets: inherit
|
||||
secrets: inherit
|
||||
flatpak:
|
||||
name: "Flatpak"
|
||||
container:
|
||||
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-47
|
||||
options: --privileged
|
||||
volumes:
|
||||
- /usr/local/lib/android:/usr/local/lib/android
|
||||
- /usr/share/dotnet:/usr/share/dotnet
|
||||
- /opt/ghc:/opt/ghc1
|
||||
- /usr/local/share/boost:/usr/local/share/boost1
|
||||
strategy:
|
||||
matrix:
|
||||
variant:
|
||||
- arch: x86_64
|
||||
runner: ubuntu-24.04
|
||||
- arch: aarch64
|
||||
runner: ubuntu-24.04-arm
|
||||
runs-on: ${{ matrix.variant.runner }}
|
||||
env:
|
||||
date:
|
||||
ver:
|
||||
ver_pure:
|
||||
steps:
|
||||
- name: "Remove unneeded stuff to free disk space"
|
||||
run:
|
||||
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*"
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get the version and date
|
||||
run: |
|
||||
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
ver="PR-${{ github.event.number }}"
|
||||
else
|
||||
ver=V$ver_pure
|
||||
fi
|
||||
echo "ver=$ver" >> $GITHUB_ENV
|
||||
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
- uses: flathub-infra/flatpak-github-actions/flatpak-builder@master
|
||||
with:
|
||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml
|
||||
cache: true
|
||||
arch: ${{ matrix.variant.arch }}
|
||||
upload-artifact: false
|
||||
- name: Upload artifacts Flatpak
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
|
||||
- name: Deploy Flatpak to nightly release
|
||||
if: ${{github.ref == 'refs/heads/main'}}
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
asset_name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
|
||||
9
.github/workflows/build_check_cache.yml
vendored
9
.github/workflows/build_check_cache.yml
vendored
@@ -30,13 +30,12 @@ jobs:
|
||||
- name: set outputs
|
||||
id: set_outputs
|
||||
env:
|
||||
underscore-arch: ${{ inputs.os == 'macos-12' && '_' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing
|
||||
dash-arch: ${{ inputs.os == 'macos-12' && '-' || ''}}${{ inputs.os == 'macos-12' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing
|
||||
dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-12') && 'OrcaSlicer_dep' || 'destdir' }}
|
||||
# todo: this is mad! refactor other build scripts to use same name
|
||||
dep-folder-name: ${{ inputs.os == 'windows-latest' && '/OrcaSlicer_dep' || inputs.os == 'macos-14' && '' || inputs.os != 'macos-14' && '/destdir' || '' }}
|
||||
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
||||
run: |
|
||||
echo cache-key=${{ runner.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
||||
echo cache-path=${{ github.workspace }}/deps/build${{ env.underscore-arch }}/${{ env.dep-folder-name }}${{ env.underscore-arch }} >> ${{ env.output-cmd }}
|
||||
echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
||||
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
|
||||
|
||||
- name: load cache
|
||||
id: cache_deps
|
||||
|
||||
77
.github/workflows/build_deps.yml
vendored
77
.github/workflows/build_deps.yml
vendored
@@ -28,19 +28,23 @@ jobs:
|
||||
env:
|
||||
date:
|
||||
steps:
|
||||
|
||||
|
||||
# Setup the environment
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
lfs: 'true'
|
||||
|
||||
|
||||
- name: load cached deps
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ inputs.cache-path }}
|
||||
key: ${{ inputs.cache-key }}
|
||||
|
||||
- uses: lukka/get-cmake@latest
|
||||
with:
|
||||
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
||||
|
||||
- name: setup dev on Windows
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
@@ -49,64 +53,72 @@ jobs:
|
||||
if: inputs.os != 'windows-latest'
|
||||
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
|
||||
- name: Get the date on Windows
|
||||
if: inputs.os == 'windows-latest'
|
||||
run: echo "date=$(Get-Date -Format 'yyyyMMdd')" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||
shell: pwsh
|
||||
|
||||
|
||||
|
||||
# Build Dependencies
|
||||
- name: Build on Windows
|
||||
if: inputs.os == 'windows-latest'
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
choco install strawberryperl
|
||||
mkdir ${{ github.workspace }}/deps/build
|
||||
mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep
|
||||
.\build_release_vs2022.bat deps
|
||||
.\build_release_vs2022.bat pack
|
||||
cd ${{ github.workspace }}/deps/build
|
||||
|
||||
- name: Build on Mac ${{ inputs.arch }}
|
||||
if: inputs.os == 'macos-12'
|
||||
if: inputs.os == 'macos-14'
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
brew install cmake git gettext automake texinfo ninja
|
||||
brew install automake texinfo libtool
|
||||
brew list
|
||||
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}
|
||||
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }}
|
||||
brew uninstall --ignore-dependencies zstd
|
||||
./build_release_macos.sh -dpx -a ${{ inputs.arch }} -t 10.15
|
||||
./build_release_macos.sh -dx -a universal -t 10.15 -1
|
||||
for arch in arm64 x86_64; do
|
||||
(cd "${{ github.workspace }}/deps/build/${arch}" && \
|
||||
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
|
||||
done
|
||||
brew install zstd
|
||||
|
||||
|
||||
- name: Install Ubuntu Build Dependencies
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
|
||||
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
|
||||
run: |
|
||||
${{ env.apt-cmd }} update
|
||||
${{ env.apt-cmd }} install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
|
||||
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
|
||||
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-${{ env.webkit-ver }}-dev \
|
||||
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
|
||||
gstreamer1.0-plugins-bad wget sudo autoconf curl libunwind-dev texinfo
|
||||
|
||||
- name: Build on Ubuntu
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
|
||||
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
|
||||
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \
|
||||
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
|
||||
gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev texinfo
|
||||
mkdir -p ${{ github.workspace }}/deps/build
|
||||
mkdir -p ${{ github.workspace }}/deps/build/destdir
|
||||
sudo ./BuildLinux.sh -ur
|
||||
sudo ./build_linux.sh -ur
|
||||
sudo chown $USER -R ./
|
||||
./BuildLinux.sh -dr
|
||||
./build_linux.sh -dr
|
||||
cd deps/build
|
||||
tar -czvf OrcaSlicer_dep_ubuntu_$(date +"%Y%m%d").tar.gz destdir
|
||||
|
||||
|
||||
|
||||
|
||||
# Upload Artifacts
|
||||
- name: Upload Mac ${{ inputs.arch }} artifacts
|
||||
if: inputs.os == 'macos-12'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }}
|
||||
path: ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep*.tar.gz
|
||||
# - name: Upload Mac ${{ inputs.arch }} artifacts
|
||||
# if: inputs.os == 'macos-14'
|
||||
# uses: actions/upload-artifact@v4
|
||||
# with:
|
||||
# name: OrcaSlicer_dep_mac_${{ env.date }}
|
||||
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.tar.gz
|
||||
|
||||
- name: Upload Windows artifacts
|
||||
if: inputs.os == 'windows-latest'
|
||||
@@ -116,12 +128,14 @@ jobs:
|
||||
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
|
||||
|
||||
- name: Upload Ubuntu artifacts
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||
env:
|
||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_dep_ubuntu_${{ env.date }}
|
||||
name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
|
||||
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
|
||||
|
||||
|
||||
build_orca:
|
||||
name: Build OrcaSlicer
|
||||
needs: [build_deps]
|
||||
@@ -133,4 +147,3 @@ jobs:
|
||||
os: ${{ inputs.os }}
|
||||
arch: ${{ inputs.arch }}
|
||||
secrets: inherit
|
||||
|
||||
|
||||
260
.github/workflows/build_orca.yml
vendored
260
.github/workflows/build_orca.yml
vendored
@@ -36,6 +36,10 @@ jobs:
|
||||
key: ${{ inputs.cache-key }}
|
||||
fail-on-cache-miss: true
|
||||
|
||||
- uses: lukka/get-cmake@latest
|
||||
with:
|
||||
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
||||
|
||||
- name: Get the version and date on Ubuntu and macOS
|
||||
if: inputs.os != 'windows-latest'
|
||||
run: |
|
||||
@@ -57,7 +61,7 @@ jobs:
|
||||
$ref = "${{ github.ref }}"
|
||||
$eventName = "${{ github.event_name }}"
|
||||
$prNumber = "${{ github.event.number }}"
|
||||
|
||||
|
||||
if ($eventName -eq 'pull_request') {
|
||||
$ver = "PR" + $prNumber
|
||||
} else {
|
||||
@@ -67,31 +71,37 @@ jobs:
|
||||
}
|
||||
$ver = "V$ver"
|
||||
}
|
||||
|
||||
|
||||
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||
echo "date=$date" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||
echo "date: ${{ env.date }} version: ${{ env.ver }}"
|
||||
shell: pwsh
|
||||
|
||||
|
||||
# Mac
|
||||
- name: Install tools mac
|
||||
if: inputs.os == 'macos-12'
|
||||
if: inputs.os == 'macos-14'
|
||||
run: |
|
||||
brew install cmake git gettext tree ninja
|
||||
brew install libtool
|
||||
brew list
|
||||
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}
|
||||
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}}
|
||||
tree ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}}
|
||||
mkdir -p ${{ github.workspace }}/deps/build
|
||||
|
||||
- name: Free disk space
|
||||
if: inputs.os == 'macos-14'
|
||||
run: |
|
||||
df -hI /dev/disk3s1s1
|
||||
sudo find /Applications -maxdepth 1 -type d -name "Xcode_*.app" ! -name "Xcode_15.4.app" -exec rm -rf {} +
|
||||
sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/*
|
||||
df -hI /dev/disk3s1s1
|
||||
|
||||
- name: Build slicer mac
|
||||
if: inputs.os == 'macos-12'
|
||||
if: inputs.os == 'macos-14'
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
./build_release_macos.sh -s -n -x -a ${{inputs.arch}} -t 10.15
|
||||
./build_release_macos.sh -s -n -x -a universal -t 10.15 -1
|
||||
|
||||
# Thanks to RaySajuuk, it's working now
|
||||
- name: Sign app and notary
|
||||
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-12'
|
||||
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-14'
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||
@@ -108,39 +118,89 @@ jobs:
|
||||
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
|
||||
security list-keychain -d user -s $KEYCHAIN_PATH
|
||||
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/OrcaSlicer.app
|
||||
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer.app
|
||||
# Sign OrcaSlicer_profile_validator.app if it exists
|
||||
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app
|
||||
fi
|
||||
|
||||
# Create main OrcaSlicer DMG
|
||||
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications
|
||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
|
||||
# Create separate OrcaSlicer_profile_validator DMG if the app exists
|
||||
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg
|
||||
cp -R ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/
|
||||
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/Applications
|
||||
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
fi
|
||||
|
||||
# Notarize main DMG
|
||||
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
|
||||
xcrun notarytool submit "OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
||||
xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
||||
xcrun stapler staple OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
|
||||
# Notarize profile validator DMG if it exists
|
||||
if [ -f "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" ]; then
|
||||
xcrun notarytool submit "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
||||
xcrun stapler staple OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
fi
|
||||
|
||||
- name: Create DMG without notary
|
||||
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-12'
|
||||
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14'
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications
|
||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
|
||||
# Create separate OrcaSlicer_profile_validator DMG if the app exists
|
||||
if [ -f "${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
mkdir -p ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg
|
||||
cp -R ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/
|
||||
ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg/Applications
|
||||
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
fi
|
||||
|
||||
- name: Upload artifacts mac
|
||||
if: inputs.os == 'macos-12'
|
||||
if: inputs.os == 'macos-14'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
name: OrcaSlicer_Mac_universal_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator DMG mac
|
||||
if: inputs.os == 'macos-14'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Deploy Mac release
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-12'
|
||||
uses: WebFreak001/deploy-nightly@v3.1.0
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
asset_name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
||||
asset_content_type: application/octet-stream
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
asset_name: OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
|
||||
- name: Deploy Mac OrcaSlicer_profile_validator DMG release
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
asset_name: OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1
|
||||
|
||||
# Windows
|
||||
- name: setup MSVC
|
||||
if: inputs.os == 'windows-latest'
|
||||
@@ -155,6 +215,9 @@ jobs:
|
||||
- name: Build slicer Win
|
||||
if: inputs.os == 'windows-latest'
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
|
||||
WindowsSDKVersion: '10.0.22000.0\'
|
||||
run: .\build_release_vs2022.bat slicer
|
||||
|
||||
- name: Create installer Win
|
||||
@@ -174,13 +237,13 @@ jobs:
|
||||
working-directory: ${{ github.workspace }}/build/src/Release
|
||||
shell: cmd
|
||||
run: '"C:/Program Files/7-Zip/7z.exe" a -m0=lzma2 -mx9 Debug_PDB_${{ env.ver }}_for_developers_only.7z *.pdb'
|
||||
|
||||
|
||||
- name: Upload artifacts Win zip
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_Windows_${{ env.ver }}_portable
|
||||
path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
||||
path: ${{ github.workspace }}/build/OrcaSlicer
|
||||
|
||||
- name: Upload artifacts Win installer
|
||||
if: inputs.os == 'windows-latest'
|
||||
@@ -196,59 +259,83 @@ jobs:
|
||||
name: PDB
|
||||
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator Win
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
|
||||
|
||||
- name: Deploy Windows release portable
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||
uses: WebFreak001/deploy-nightly@v3.1.0
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
||||
asset_name: OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
||||
asset_content_type: application/x-zip-compressed
|
||||
max_releases: 1
|
||||
asset_content_type: application/x-zip-compressed
|
||||
max_releases: 1
|
||||
|
||||
- name: Deploy Windows release installer
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||
uses: WebFreak001/deploy-nightly@v3.1.0
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
||||
asset_name: OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
||||
asset_content_type: application/x-msdownload
|
||||
max_releases: 1
|
||||
max_releases: 1
|
||||
|
||||
- name: Deploy Windows OrcaSlicer_profile_validator release
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
|
||||
asset_name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}.exe
|
||||
asset_content_type: application/x-msdownload
|
||||
max_releases: 1
|
||||
|
||||
# Ubuntu
|
||||
- name: Install dependencies
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
env:
|
||||
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
|
||||
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
|
||||
libfuse2-pkg: ${{ (inputs.os == 'ubuntu-20.04' && 'libfuse2') || (inputs.os == 'ubuntu-24.04' && 'libfuse2t64') || '' }}
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \
|
||||
${{ env.apt-cmd }} update
|
||||
${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
|
||||
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
|
||||
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
|
||||
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
|
||||
libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget
|
||||
libgtk-3-dev libgtk-3-dev libmspack-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
|
||||
libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget ${{ env.libfuse2-pkg }}
|
||||
|
||||
- name: Install dependencies from BuildLinux.sh
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
- name: Install dependencies from build_linux.sh
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
shell: bash
|
||||
run: sudo ./BuildLinux.sh -ur
|
||||
run: sudo ./build_linux.sh -ur
|
||||
|
||||
- name: Fix permissions
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
shell: bash
|
||||
run: sudo chown $USER -R ./
|
||||
|
||||
- name: Build slicer
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||
shell: bash
|
||||
env:
|
||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||
run: |
|
||||
./BuildLinux.sh -isr
|
||||
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage
|
||||
chmod +x ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage
|
||||
./build_linux.sh -isr
|
||||
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||
|
||||
- name: Build orca_custom_preset_tests
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04'
|
||||
working-directory: ${{ github.workspace }}/build/src
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -257,30 +344,65 @@ jobs:
|
||||
zip -r orca_custom_preset_tests.zip user/
|
||||
|
||||
- name: Upload artifacts Ubuntu
|
||||
if: inputs.os == 'ubuntu-20.04'
|
||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||
env:
|
||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_Linux_${{ env.ver }}
|
||||
path: './build/OrcaSlicer_Linux_${{ env.ver }}.AppImage'
|
||||
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator Ubuntu
|
||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||
env:
|
||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||
path: './build/src/OrcaSlicer_profile_validator'
|
||||
|
||||
- name: Deploy Ubuntu release
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
||||
uses: WebFreak001/deploy-nightly@v3.1.0
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||
env:
|
||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage
|
||||
asset_name: OrcaSlicer_Linux_${{ env.ver }}.AppImage
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
- name: Deploy Ubuntu release
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
|
||||
uses: rickstaa/action-create-tag@v1
|
||||
with:
|
||||
tag: "nightly-builds"
|
||||
tag_exists_error: false
|
||||
force_push_tag: true
|
||||
message: "nightly-builds"
|
||||
|
||||
- name: Deploy Ubuntu OrcaSlicer_profile_validator release
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||
env:
|
||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ./build/src/OrcaSlicer_profile_validator
|
||||
asset_name: OrcaSlicer_profile_validator_Linux${{ env.ubuntu-ver-str }}_${{ env.ver }}
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1
|
||||
|
||||
- name: Deploy orca_custom_preset_tests
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
||||
uses: WebFreak001/deploy-nightly@v3.1.0
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: ${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip
|
||||
asset_name: orca_custom_preset_tests.zip
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1
|
||||
max_releases: 1
|
||||
|
||||
28
.github/workflows/check_profiles.yml
vendored
28
.github/workflows/check_profiles.yml
vendored
@@ -1,20 +1,32 @@
|
||||
name: Check profiles
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'resources/profiles/**'
|
||||
- ".github/workflows/check_profiles.yml"
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'resources/profiles/**'
|
||||
- ".github/workflows/check_profiles.yml"
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
logLevel:
|
||||
description: 'Log level'
|
||||
required: true
|
||||
default: 'warning'
|
||||
|
||||
|
||||
jobs:
|
||||
check_translation:
|
||||
name: Check profiles
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run extra JSON check
|
||||
run: |
|
||||
python3 ./scripts/orca_extra_profile_check.py
|
||||
|
||||
# download
|
||||
- name: Download
|
||||
working-directory: ${{ github.workspace }}
|
||||
@@ -36,4 +48,4 @@ jobs:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
71
.github/workflows/claude-code-review.yml
vendored
Normal file
71
.github/workflows/claude-code-review.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
name: Claude Code Review
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
claude-review:
|
||||
# Optional: Filter by PR author
|
||||
# if: |
|
||||
# github.event.pull_request.user.login == 'external-contributor' ||
|
||||
# github.event.pull_request.user.login == 'new-developer' ||
|
||||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code Review
|
||||
id: claude-review
|
||||
uses: anthropics/claude-code-action@beta
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
|
||||
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
|
||||
# model: "claude-opus-4-1-20250805"
|
||||
|
||||
# Direct prompt for automated review (no @claude mention needed)
|
||||
direct_prompt: |
|
||||
Please review this pull request and provide feedback on:
|
||||
- Code quality and best practices
|
||||
- Potential bugs or issues
|
||||
- Performance considerations
|
||||
- Security concerns
|
||||
- Test coverage
|
||||
|
||||
Be constructive and helpful in your feedback.
|
||||
|
||||
# Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR
|
||||
# use_sticky_comment: true
|
||||
|
||||
# Optional: Customize review based on file types
|
||||
# direct_prompt: |
|
||||
# Review this PR focusing on:
|
||||
# - For TypeScript files: Type safety and proper interface usage
|
||||
# - For API endpoints: Security, input validation, and error handling
|
||||
# - For React components: Performance, accessibility, and best practices
|
||||
# - For tests: Coverage, edge cases, and test quality
|
||||
|
||||
# Optional: Different prompts for different authors
|
||||
# direct_prompt: |
|
||||
# ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&
|
||||
# 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||
|
||||
# 'Please provide a thorough code review focusing on our coding standards and best practices.' }}
|
||||
|
||||
# Optional: Add specific tools for running tests or linting
|
||||
# allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"
|
||||
|
||||
# Optional: Skip review for certain conditions
|
||||
# if: |
|
||||
# !contains(github.event.pull_request.title, '[skip-review]') &&
|
||||
# !contains(github.event.pull_request.title, '[WIP]')
|
||||
|
||||
64
.github/workflows/claude.yml
vendored
Normal file
64
.github/workflows/claude.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Claude Code
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
issues:
|
||||
types: [opened, assigned]
|
||||
pull_request_review:
|
||||
types: [submitted]
|
||||
|
||||
jobs:
|
||||
claude:
|
||||
if: |
|
||||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
||||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
||||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
||||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
id-token: write
|
||||
actions: read # Required for Claude to read CI results on PRs
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code
|
||||
id: claude
|
||||
uses: anthropics/claude-code-action@beta
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
|
||||
# This is an optional setting that allows Claude to read CI results on PRs
|
||||
additional_permissions: |
|
||||
actions: read
|
||||
|
||||
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
|
||||
# model: "claude-opus-4-1-20250805"
|
||||
|
||||
# Optional: Customize the trigger phrase (default: @claude)
|
||||
# trigger_phrase: "/claude"
|
||||
|
||||
# Optional: Trigger when specific user is assigned to an issue
|
||||
# assignee_trigger: "claude-bot"
|
||||
|
||||
# Optional: Allow Claude to run specific commands
|
||||
# allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
|
||||
|
||||
# Optional: Add custom instructions for Claude to customize its behavior for your project
|
||||
# custom_instructions: |
|
||||
# Follow our coding standards
|
||||
# Ensure all new code has tests
|
||||
# Use TypeScript for new files
|
||||
|
||||
# Optional: Custom environment variables for Claude
|
||||
# claude_env: |
|
||||
# NODE_ENV: test
|
||||
|
||||
10
.github/workflows/orca_bot.yml
vendored
10
.github/workflows/orca_bot.yml
vendored
@@ -2,7 +2,13 @@ name: Orca bot
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
logLevel:
|
||||
description: 'Log level'
|
||||
required: true
|
||||
default: 'warning'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -25,6 +31,8 @@ jobs:
|
||||
exempt-all-issue-milestones: true
|
||||
# Exempt all issues with assignees from stale
|
||||
exempt-all-issue-assignees: true
|
||||
# Exempt feature requests
|
||||
exempt-issue-labels: "enhancement"
|
||||
# Idle number of days before marking issues stale
|
||||
days-before-issue-stale: 90
|
||||
# Idle number of days before marking issues close
|
||||
|
||||
9
.github/workflows/publish_docs_to_wiki.yml
vendored
9
.github/workflows/publish_docs_to_wiki.yml
vendored
@@ -8,6 +8,13 @@ on:
|
||||
branches:
|
||||
- main # This can be changed to any branch of your preference
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
logLevel:
|
||||
description: 'Log level'
|
||||
required: true
|
||||
default: 'warning'
|
||||
|
||||
env:
|
||||
USER_TOKEN: ${{ secrets.GH_WIKI_PAT }} # This is the repository secret personal access token
|
||||
USER_NAME: ${{ vars.BOT_USER_NAME }} # Enter the username of your (bot) account
|
||||
@@ -27,7 +34,7 @@ jobs:
|
||||
run: |
|
||||
git config --global user.name "$USER_NAME"
|
||||
git config --global user.email "$USER_NAME"@users.noreply.github.com
|
||||
git clone https://"$USER_TOKEN"@github.com/"$OWNER"/"$REPOSITORY_NAME".wiki.git tmp_wiki
|
||||
git clone https://"$USER_TOKEN"@github.com/SoftFever/"$REPOSITORY_NAME".wiki.git tmp_wiki
|
||||
# 4. Synchronize differences between `doc` & `tmp_wiki`
|
||||
# 5. Push new Wiki content
|
||||
- name: Push main repo content to wiki
|
||||
|
||||
38
.github/workflows/update-translation.yml
vendored
Normal file
38
.github/workflows/update-translation.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: Update Translation Catalog
|
||||
on:
|
||||
# schedule:
|
||||
# - cron: 0 0 * * 1
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update_translation:
|
||||
name: Update translation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install gettext
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y gettext
|
||||
|
||||
- name: Update translation catalog
|
||||
run: |
|
||||
./run_gettext.sh --full
|
||||
git add localization/i18n/*
|
||||
|
||||
- name: Commit translation catalog updates
|
||||
uses: qoomon/actions--create-commit@v1
|
||||
id: commit
|
||||
with:
|
||||
message: Update translation catalog
|
||||
skip-empty: true
|
||||
|
||||
- name: Push changes
|
||||
run: git push
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -32,4 +32,6 @@ src/OrcaSlicer-doc/
|
||||
**/filament_full/
|
||||
/deps/DL_CACHE/
|
||||
/deps/DL_CACHE
|
||||
resources/profiles/user/default
|
||||
**/.flatpak-builder/
|
||||
resources/profiles/user/default
|
||||
*.code-workspace
|
||||
|
||||
259
BuildLinux.sh
259
BuildLinux.sh
@@ -1,259 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
export ROOT=`pwd`
|
||||
export NCORES=`nproc --all`
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=${NCORES}
|
||||
FOUND_GTK2=$(dpkg -l libgtk* | grep gtk2)
|
||||
FOUND_GTK3=$(dpkg -l libgtk* | grep gtk-3)
|
||||
|
||||
set -e # exit on first error
|
||||
|
||||
function check_available_memory_and_disk() {
|
||||
FREE_MEM_GB=$(free -g -t | grep 'Mem:' | rev | cut -d" " -f1 | rev)
|
||||
MIN_MEM_GB=10
|
||||
|
||||
FREE_DISK_KB=$(df -k . | tail -1 | awk '{print $4}')
|
||||
MIN_DISK_KB=$((10 * 1024 * 1024))
|
||||
|
||||
if [ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]; then
|
||||
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (systen has only ${FREE_MEM_GB}G available)"
|
||||
echo && free -h && echo
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]]; then
|
||||
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo $MIN_DISK_KB |awk '{ printf "%.1fG\n", $1/1024/1024; }') (systen has only $(echo ${FREE_DISK_KB} | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
|
||||
echo && df -h . && echo
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: ./BuildLinux.sh [-i][-u][-d][-s][-b][-g]"
|
||||
echo " -i: Generate appimage (optional)"
|
||||
echo " -g: force gtk2 build"
|
||||
echo " -b: build in debug mode"
|
||||
echo " -d: build deps (optional)"
|
||||
echo " -s: build orca-slicer (optional)"
|
||||
echo " -u: only update clock & dependency packets (optional and need sudo)"
|
||||
echo " -r: skip free ram check (low ram compiling)"
|
||||
echo "For a first use, you want to 'sudo ./BuildLinux.sh -u'"
|
||||
echo " and then './BuildLinux.sh -dsi'"
|
||||
}
|
||||
|
||||
unset name
|
||||
while getopts ":dsiuhgbr" opt; do
|
||||
case ${opt} in
|
||||
u )
|
||||
UPDATE_LIB="1"
|
||||
;;
|
||||
i )
|
||||
BUILD_IMAGE="1"
|
||||
;;
|
||||
d )
|
||||
BUILD_DEPS="1"
|
||||
;;
|
||||
s )
|
||||
BUILD_ORCA="1"
|
||||
;;
|
||||
b )
|
||||
BUILD_DEBUG="1"
|
||||
;;
|
||||
g )
|
||||
FOUND_GTK3=""
|
||||
;;
|
||||
r )
|
||||
SKIP_RAM_CHECK="1"
|
||||
;;
|
||||
h ) usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $OPTIND -eq 1 ]
|
||||
then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Addtional Dev packages for OrcaSlicer
|
||||
export REQUIRED_DEV_PACKAGES="libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules texinfo"
|
||||
# libwebkit2gtk-4.1-dev ??
|
||||
export DEV_PACKAGES_COUNT=$(echo ${REQUIRED_DEV_PACKAGES} | wc -w)
|
||||
if [ $(dpkg --get-selections | grep -E "$(echo ${REQUIRED_DEV_PACKAGES} | tr ' ' '|')" | wc -l) -lt ${DEV_PACKAGES_COUNT} ]; then
|
||||
sudo apt install -y ${REQUIRED_DEV_PACKAGES} git cmake wget file gettext
|
||||
fi
|
||||
|
||||
#FIXME: require root for -u option
|
||||
if [[ -n "$UPDATE_LIB" ]]
|
||||
then
|
||||
echo -n -e "Updating linux ...\n"
|
||||
# hwclock -s # DeftDawg: Why does SuperSlicer want to do this?
|
||||
apt update
|
||||
if [[ -z "$FOUND_GTK3" ]]
|
||||
then
|
||||
echo -e "\nInstalling: libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git\n"
|
||||
apt install -y libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git
|
||||
else
|
||||
echo -e "\nFind libgtk-3, installing: libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev cmake git\n"
|
||||
apt install -y libgtk-3-dev libglew-dev libudev-dev libdbus-1-dev cmake git
|
||||
fi
|
||||
# for ubuntu 22+ and 23+:
|
||||
ubu_major_version="$(grep VERSION_ID /etc/os-release | cut -d "=" -f 2 | cut -d "." -f 1 | tr -d /\"/)"
|
||||
if [ $ubu_major_version == "22" ] || [ $ubu_major_version == "23" ]
|
||||
then
|
||||
apt install -y curl libfuse-dev libssl-dev libcurl4-openssl-dev m4
|
||||
fi
|
||||
if [[ -n "$BUILD_DEBUG" ]]
|
||||
then
|
||||
echo -e "\nInstalling: libssl-dev libcurl4-openssl-dev\n"
|
||||
apt install -y libssl-dev libcurl4-openssl-dev
|
||||
fi
|
||||
echo -e "done\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
FOUND_GTK2_DEV=$(dpkg -l libgtk* | grep gtk2.0-dev || echo '')
|
||||
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
||||
echo "FOUND_GTK2=$FOUND_GTK2)"
|
||||
if [[ -z "$FOUND_GTK2_DEV" ]]
|
||||
then
|
||||
if [[ -z "$FOUND_GTK3_DEV" ]]
|
||||
then
|
||||
echo "Error, you must install the dependencies before."
|
||||
echo "Use option -u with sudo"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "[1/9] Updating submodules..."
|
||||
{
|
||||
# update submodule profiles
|
||||
pushd resources/profiles
|
||||
git submodule update --init
|
||||
popd
|
||||
}
|
||||
|
||||
echo "[2/9] Changing date in version..."
|
||||
{
|
||||
# change date in version
|
||||
sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc
|
||||
}
|
||||
echo "done"
|
||||
|
||||
# mkdir in deps
|
||||
if [ ! -d "deps/build" ]
|
||||
then
|
||||
mkdir deps/build
|
||||
fi
|
||||
|
||||
if ! [[ -n "$SKIP_RAM_CHECK" ]]
|
||||
then
|
||||
check_available_memory_and_disk
|
||||
fi
|
||||
|
||||
if [[ -n "$BUILD_DEPS" ]]
|
||||
then
|
||||
echo "[3/9] Configuring dependencies..."
|
||||
BUILD_ARGS=""
|
||||
if [[ -n "$FOUND_GTK3_DEV" ]]
|
||||
then
|
||||
BUILD_ARGS="-DDEP_WX_GTK3=ON"
|
||||
fi
|
||||
if [[ -n "$BUILD_DEBUG" ]]
|
||||
then
|
||||
# have to build deps with debug & release or the cmake won't find everything it needs
|
||||
mkdir deps/build/release
|
||||
pushd deps/build/release
|
||||
echo -e "cmake ../.. -DDESTDIR=\"../destdir\" $BUILD_ARGS"
|
||||
cmake ../.. -DDESTDIR="../destdir" $BUILD_ARGS
|
||||
make -j$NCORES
|
||||
popd
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
|
||||
fi
|
||||
|
||||
# cmake deps
|
||||
pushd deps/build
|
||||
echo "cmake .. $BUILD_ARGS"
|
||||
cmake .. $BUILD_ARGS
|
||||
echo "done"
|
||||
|
||||
# make deps
|
||||
echo "[4/9] Building dependencies..."
|
||||
make deps -j$NCORES
|
||||
echo "done"
|
||||
|
||||
# rename wxscintilla # TODO: DeftDawg: Does OrcaSlicer need this?
|
||||
# echo "[5/9] Renaming wxscintilla library..."
|
||||
# pushd destdir/usr/local/lib
|
||||
# if [[ -z "$FOUND_GTK3_DEV" ]]
|
||||
# then
|
||||
# cp libwxscintilla-3.1.a libwx_gtk2u_scintilla-3.1.a
|
||||
# else
|
||||
# cp libwxscintilla-3.1.a libwx_gtk3u_scintilla-3.1.a
|
||||
# fi
|
||||
# popd
|
||||
# echo "done"
|
||||
|
||||
# FIXME: only clean deps if compiling succeeds; otherwise reruns waste tonnes of time!
|
||||
# clean deps
|
||||
# echo "[6/9] Cleaning dependencies..."
|
||||
# rm -rf dep_*
|
||||
popd
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
# Create main "build" directory
|
||||
if [ ! -d "build" ]
|
||||
then
|
||||
mkdir build
|
||||
fi
|
||||
|
||||
if [[ -n "$BUILD_ORCA" ]]
|
||||
then
|
||||
echo "[7/9] Configuring Slic3r..."
|
||||
BUILD_ARGS=""
|
||||
if [[ -n "$FOUND_GTK3_DEV" ]]
|
||||
then
|
||||
BUILD_ARGS="-DSLIC3R_GTK=3"
|
||||
fi
|
||||
if [[ -n "$BUILD_DEBUG" ]]
|
||||
then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
|
||||
else
|
||||
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
|
||||
fi
|
||||
|
||||
# cmake
|
||||
pushd build
|
||||
echo -e "cmake .. -DCMAKE_PREFIX_PATH=\"$PWD/../deps/build/destdir/usr/local\" -DSLIC3R_STATIC=1 -DORCA_TOOLS=ON ${BUILD_ARGS}"
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DSLIC3R_STATIC=1 ${BUILD_ARGS} -DORCA_TOOLS=ON
|
||||
echo "done"
|
||||
|
||||
# make Slic3r
|
||||
echo "[8/9] Building Slic3r..."
|
||||
make -j$NCORES OrcaSlicer # Slic3r
|
||||
|
||||
# make OrcaSlicer_profile_validator
|
||||
make -j$NCORES OrcaSlicer_profile_validator
|
||||
popd
|
||||
./run_gettext.sh
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
if [[ -e $ROOT/build/src/BuildLinuxImage.sh ]]; then
|
||||
# Give proper permissions to script
|
||||
chmod 755 $ROOT/build/src/BuildLinuxImage.sh
|
||||
|
||||
echo "[9/9] Generating Linux app..."
|
||||
pushd build
|
||||
if [[ -n "$BUILD_IMAGE" ]]
|
||||
then
|
||||
$ROOT/build/src/BuildLinuxImage.sh -i
|
||||
else
|
||||
$ROOT/build/src/BuildLinuxImage.sh
|
||||
fi
|
||||
popd
|
||||
echo "done"
|
||||
fi
|
||||
116
CLAUDE.md
Normal file
116
CLAUDE.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Overview
|
||||
|
||||
OrcaSlicer is an open-source 3D slicer application forked from Bambu Studio, built using C++ with wxWidgets for the GUI and CMake as the build system. The project uses a modular architecture with separate libraries for core slicing functionality, GUI components, and platform-specific code.
|
||||
|
||||
## Build Commands
|
||||
|
||||
### Building on macOS
|
||||
```bash
|
||||
# Build everything (dependencies and slicer)
|
||||
./build_release_macos.sh
|
||||
|
||||
# Build only dependencies
|
||||
./build_release_macos.sh -d
|
||||
|
||||
# Build only slicer (after deps are built)
|
||||
./build_release_macos.sh -s
|
||||
|
||||
# Use Ninja generator for faster builds
|
||||
./build_release_macos.sh -x
|
||||
|
||||
# Build for specific architecture
|
||||
./build_release_macos.sh -a arm64 # or x86_64
|
||||
```
|
||||
|
||||
### Building on Linux
|
||||
```bash
|
||||
# Build everything
|
||||
./build_linux.sh
|
||||
|
||||
# Check system resources first (build requires 10GB+ RAM and disk)
|
||||
./build_linux.sh -r # skip resource checks
|
||||
```
|
||||
|
||||
### Build System
|
||||
- Uses CMake with minimum version 3.13
|
||||
- Primary build directory: `build/`
|
||||
- Dependencies are built in `deps/build/`
|
||||
- The build process is split into dependency building and main application building
|
||||
|
||||
### Testing
|
||||
Tests are located in the `tests/` directory and can be run via CMake/CTest after building.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Core Libraries
|
||||
- **libslic3r/**: Core slicing engine and algorithms
|
||||
- Contains the main slicing logic, geometry processing, G-code generation
|
||||
- Platform-independent slicing functionality
|
||||
- Key classes: Print, PrintObject, Layer, GCode, Config
|
||||
|
||||
- **src/slic3r/**: Main application framework
|
||||
- GUI application entry points and main loops
|
||||
- Integration between libslic3r and the GUI
|
||||
|
||||
### GUI Components
|
||||
- Built with wxWidgets framework
|
||||
- Located primarily in `src/slic3r/GUI/`
|
||||
- Main application class: `GUI_App`
|
||||
- Uses OpenGL for 3D visualization
|
||||
|
||||
### Key Modules
|
||||
- **3MF Format Support**: `src/libslic3r/Format/3mf.cpp` - 3MF file format reading/writing
|
||||
- **G-code Processing**: `src/libslic3r/GCode/` - G-code generation and processing
|
||||
- **Geometry**: `src/libslic3r/Geometry.cpp` - 2D/3D geometry operations
|
||||
- **Print Configuration**: `src/libslic3r/PrintConfig.cpp` - Print settings and presets
|
||||
- **Model Handling**: `src/libslic3r/Model.cpp` - 3D model representation and manipulation
|
||||
|
||||
### External Dependencies
|
||||
- **Clipper**: 2D polygon clipping operations
|
||||
- **libigl**: Geometry processing library
|
||||
- **OpenVDB**: Voxel data structures (optional)
|
||||
- **TBB**: Threading Building Blocks for parallelization
|
||||
- **wxWidgets**: Cross-platform GUI toolkit
|
||||
- **OpenGL**: 3D graphics rendering
|
||||
|
||||
## File Organization
|
||||
|
||||
### Configuration and Profiles
|
||||
- `resources/profiles/`: Printer and material profiles organized by manufacturer
|
||||
- `resources/printers/`: Printer-specific configurations and G-code templates
|
||||
|
||||
### Internationalization
|
||||
- `localization/i18n/`: Translation files
|
||||
- `resources/i18n/`: Runtime language resources
|
||||
|
||||
### Platform-Specific Code
|
||||
- Platform abstractions in `src/libslic3r/Platform.cpp`
|
||||
- macOS-specific utilities in `src/libslic3r/MacUtils.mm`
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Code Style
|
||||
- C++17 standard
|
||||
- Use existing patterns found in libslic3r for consistency
|
||||
- Follow existing naming conventions (PascalCase for classes, snake_case for functions)
|
||||
|
||||
### Common Tasks
|
||||
- **Adding new print settings**: Extend `PrintConfig.cpp` and related GUI components
|
||||
- **Modifying slicing algorithms**: Work in `libslic3r/` core modules
|
||||
- **GUI changes**: Modify components in `src/slic3r/GUI/`
|
||||
- **Adding printer support**: Add profiles in `resources/profiles/`
|
||||
|
||||
### Dependencies Management
|
||||
Dependencies are managed through CMake and built separately from the main application. The `deps/` directory contains dependency build configurations.
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The codebase is large and complex - use search tools to navigate effectively
|
||||
- Many algorithms are performance-critical - consider computational complexity
|
||||
- The project maintains backward compatibility with various file formats
|
||||
- Cross-platform compatibility is important (Windows, macOS, Linux)
|
||||
- The GUI uses a custom theming system supporting light/dark modes
|
||||
183
CMakeLists.txt
183
CMakeLists.txt
@@ -1,5 +1,50 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# Verify that your CMake version is exactly 3.31.x series or lower on windows
|
||||
if ( ((MSVC) OR (WIN32)) AND (${CMAKE_VERSION} VERSION_GREATER_EQUAL "4.0") )
|
||||
message(FATAL_ERROR "Only cmake versions between 3.13.x and 3.31.x is supported on windows. Detected version: ${CMAKE_VERSION}")
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
# Detect known CI environments
|
||||
set(IS_CI FALSE)
|
||||
if(DEFINED ENV{CI})
|
||||
set(IS_CI TRUE)
|
||||
elseif(DEFINED ENV{GITHUB_ACTIONS})
|
||||
set(IS_CI TRUE)
|
||||
elseif(DEFINED ENV{GITLAB_CI})
|
||||
set(IS_CI TRUE)
|
||||
elseif(DEFINED ENV{TF_BUILD})
|
||||
set(IS_CI TRUE)
|
||||
elseif(DEFINED ENV{BUILD_NUMBER}) # Jenkins
|
||||
set(IS_CI TRUE)
|
||||
endif()
|
||||
|
||||
# Detect common misconfiguration (Strawberry Perl in PATH before CMake)
|
||||
# We use ENV to check the PATH order
|
||||
string(REPLACE "\\" "/" ENV_PATH "$ENV{PATH}")
|
||||
string(FIND "${ENV_PATH}" "Strawberry/c/bin" STRAWBERRY_POS)
|
||||
string(FIND "${ENV_PATH}" "Program Files/CMake/bin" CMAKE_POS)
|
||||
|
||||
if (STRAWBERRY_POS GREATER -1 AND CMAKE_POS GREATER -1 AND STRAWBERRY_POS LESS CMAKE_POS)
|
||||
set(_warning_text "
|
||||
#############################################################
|
||||
Detected Strawberry Perl's 'c/bin' appearing before CMake in PATH.
|
||||
This is known to cause CMake to misbehave (e.g., missing modules).
|
||||
Please adjust your PATH so that:
|
||||
C:\\Program Files\\CMake\\bin
|
||||
appears before:
|
||||
C:\\Strawberry\\c\\bin
|
||||
You can do this in Environment Variables settings.
|
||||
#############################################################
|
||||
")
|
||||
|
||||
if(NOT IS_CI)
|
||||
message(FATAL_ERROR "${_warning_text}")
|
||||
endif()
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (APPLE)
|
||||
# if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3
|
||||
if (NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
@@ -22,6 +67,18 @@ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
|
||||
endif()
|
||||
|
||||
find_package(Git)
|
||||
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
# Check current Git commit hash
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{SLIC3R_STATIC})
|
||||
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
|
||||
else()
|
||||
@@ -51,6 +108,15 @@ set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
|
||||
|
||||
set(IS_CROSS_COMPILE FALSE)
|
||||
|
||||
option (COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
|
||||
if (${COLORED_OUTPUT})
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
add_compile_options (-fdiagnostics-color=always)
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
add_compile_options (-fcolor-diagnostics)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (APPLE)
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
set(CMAKE_FIND_APPBUNDLE LAST)
|
||||
@@ -121,6 +187,9 @@ if (MSVC)
|
||||
# C4244: 'conversion' conversion from 'type1' to 'type2', possible loss of data. An integer type is converted to a smaller integer type.
|
||||
# C4267: The compiler detected a conversion from size_t to a smaller type.
|
||||
add_compile_options(/wd4244 /wd4267)
|
||||
# Disable warnings on comparison of unsigned and signed
|
||||
# C4018: signed/unsigned mismatch
|
||||
add_compile_options(/wd4018)
|
||||
endif ()
|
||||
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
@@ -167,7 +236,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
if(NOT WIN32)
|
||||
# Add DEBUG flags to debug builds.
|
||||
add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
|
||||
add_compile_definitions("$<IF:$<CONFIG:Debug>,DEBUG,NDEBUG>")
|
||||
endif()
|
||||
|
||||
# To be able to link libslic3r with the Perl XS module.
|
||||
@@ -204,7 +273,7 @@ if(WIN32)
|
||||
if(WIN10SDK_INCLUDE_PATH)
|
||||
message("Building with Win10 Netfabb STL fixing service support")
|
||||
add_definitions(-DHAS_WIN10SDK)
|
||||
include_directories("${WIN10SDK_INCLUDE_PATH}")
|
||||
include_directories(SYSTEM "${WIN10SDK_INCLUDE_PATH}")
|
||||
else()
|
||||
message("Building without Win10 Netfabb STL fixing service support")
|
||||
endif()
|
||||
@@ -232,7 +301,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(DBus REQUIRED)
|
||||
include_directories(${DBUS_INCLUDE_DIRS})
|
||||
include_directories(SYSTEM ${DBUS_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
||||
@@ -249,6 +318,22 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
|
||||
add_compile_options(-Werror=return-type)
|
||||
|
||||
# Since some portions of code are just commented out or put under conditional compilation, there are
|
||||
# a bunch of warning related to unused functions and variables. Suppress those warnings to not pollute
|
||||
# compilers diagnostics output with warnings we not going to look at
|
||||
add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs)
|
||||
|
||||
# Ignore signed/unsigned comparison warnings
|
||||
add_compile_options(-Wno-sign-compare)
|
||||
|
||||
# The mismatch of tabs and spaces throughout the project can sometimes
|
||||
# cause this warning to appear even though the indentation is fine.
|
||||
# Some includes also cause the warning
|
||||
add_compile_options(-Wno-misleading-indentation)
|
||||
|
||||
# Disable warning if enum value does not have a corresponding case in switch statement
|
||||
add_compile_options(-Wno-switch)
|
||||
|
||||
# removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
|
||||
# https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
|
||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
||||
@@ -262,7 +347,7 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
add_compile_options(-Wno-deprecated-declarations)
|
||||
endif()
|
||||
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
add_compile_options(-Wno-error=enum-constexpr-conversion)
|
||||
endif()
|
||||
|
||||
@@ -271,9 +356,22 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
# We will turn the warning of for GCC for now:
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
# GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
# We will turn the warning of for GCC for now:
|
||||
add_compile_options(-Wno-unknown-pragmas)
|
||||
endif()
|
||||
|
||||
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
|
||||
add_compile_options(-gz=zstd)
|
||||
endif()
|
||||
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=template-id-cdtor" )
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if (SLIC3R_ASAN)
|
||||
@@ -286,6 +384,8 @@ if (SLIC3R_ASAN)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address")
|
||||
else()
|
||||
add_compile_definitions(_DISABLE_STRING_ANNOTATION=1 _DISABLE_VECTOR_ANNOTATION=1)
|
||||
endif ()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
@@ -310,11 +410,11 @@ message(STATUS "LIBDIR: ${LIBDIR}")
|
||||
message(STATUS "LIBDIR_BIN: ${LIBDIR_BIN}")
|
||||
|
||||
# For the bundled boost libraries (boost::nowide)
|
||||
include_directories(${LIBDIR})
|
||||
include_directories(SYSTEM ${LIBDIR})
|
||||
# For generated header files
|
||||
include_directories(${LIBDIR_BIN}/platform)
|
||||
include_directories(SYSTEM ${LIBDIR_BIN}/platform)
|
||||
# For ligigl
|
||||
include_directories(${LIBDIR}/libigl)
|
||||
include_directories(SYSTEM ${LIBDIR}/libigl)
|
||||
|
||||
if(WIN32)
|
||||
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
||||
@@ -377,14 +477,17 @@ if(SLIC3R_STATIC)
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
# Use boost libraries linked statically to the C++ runtime.
|
||||
# set(Boost_USE_STATIC_RUNTIME ON)
|
||||
else()
|
||||
add_definitions(-DBOOST_LOG_DYN_LINK)
|
||||
endif()
|
||||
#set(Boost_DEBUG ON)
|
||||
# set(Boost_COMPILER "-mgw81")
|
||||
# boost::process was introduced first in version 1.64.0,
|
||||
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
||||
set(MINIMUM_BOOST_VERSION "1.66.0")
|
||||
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams;program_options")
|
||||
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
|
||||
if(POLICY CMP0167)
|
||||
cmake_policy(SET CMP0167 NEW)
|
||||
endif()
|
||||
find_package(Boost 1.83.0 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options nowide)
|
||||
|
||||
add_library(boost_libs INTERFACE)
|
||||
add_library(boost_headeronly INTERFACE)
|
||||
@@ -401,7 +504,7 @@ endif()
|
||||
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
||||
if(MSVC)
|
||||
string(TOUPPER ${from_Cfg} from_CFG)
|
||||
|
||||
|
||||
foreach(tgt ${targets})
|
||||
if(TARGET ${tgt})
|
||||
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
||||
@@ -410,28 +513,8 @@ function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if(TARGET Boost::system)
|
||||
message(STATUS "Boost::boost exists")
|
||||
target_link_libraries(boost_headeronly INTERFACE Boost::boost)
|
||||
|
||||
# Only from cmake 3.12
|
||||
# list(TRANSFORM _boost_components PREPEND Boost:: OUTPUT_VARIABLE _boost_targets)
|
||||
set(_boost_targets "")
|
||||
foreach(comp ${_boost_components})
|
||||
list(APPEND _boost_targets "Boost::${comp}")
|
||||
endforeach()
|
||||
|
||||
target_link_libraries(boost_libs INTERFACE
|
||||
boost_headeronly # includes the custom compile definitions as well
|
||||
${_boost_targets}
|
||||
)
|
||||
slic3r_remap_configs("${_boost_targets}" RelWithDebInfo Release)
|
||||
else()
|
||||
target_include_directories(boost_headeronly INTERFACE ${Boost_INCLUDE_DIRS})
|
||||
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
|
||||
endif()
|
||||
|
||||
|
||||
target_include_directories(boost_headeronly SYSTEM INTERFACE ${Boost_INCLUDE_DIRS})
|
||||
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
|
||||
|
||||
# Find and configure intel-tbb
|
||||
if(SLIC3R_STATIC)
|
||||
@@ -440,7 +523,7 @@ endif()
|
||||
set(TBB_DEBUG 1)
|
||||
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release "")
|
||||
find_package(TBB REQUIRED)
|
||||
# include_directories(${TBB_INCLUDE_DIRS})
|
||||
# include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
|
||||
# add_definitions(${TBB_DEFINITIONS})
|
||||
# if(MSVC)
|
||||
# # Suppress implicit linking of the TBB libraries by the Visual Studio compiler.
|
||||
@@ -482,7 +565,7 @@ if (SLIC3R_STATIC AND NOT SLIC3R_STATIC_EXCLUDE_CURL)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
|
||||
message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
|
||||
target_include_directories(libcurl INTERFACE ${OPENSSL_INCLUDE_DIR})
|
||||
target_include_directories(libcurl SYSTEM INTERFACE ${OPENSSL_INCLUDE_DIR})
|
||||
target_link_libraries(libcurl INTERFACE ${OPENSSL_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
@@ -548,7 +631,7 @@ add_custom_target(gettext_make_pot
|
||||
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
||||
-f "${BBL_L18N_DIR}/list.txt"
|
||||
-o "${BBL_L18N_DIR}/OrcaSlicer.pot"
|
||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
|
||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
COMMENT "Generate pot file from strings in the source tree"
|
||||
)
|
||||
@@ -603,11 +686,9 @@ endif ()
|
||||
|
||||
find_path(SPNAV_INCLUDE_DIR spnav.h)
|
||||
if (SPNAV_INCLUDE_DIR)
|
||||
find_library(HAVE_SPNAV spnav)
|
||||
if (HAVE_SPNAV)
|
||||
find_library(SPNAV_LIB NAMES libspnav.a) # Force linking libspnav statically
|
||||
if (SPNAV_LIB)
|
||||
add_definitions(-DHAVE_SPNAV)
|
||||
add_library(libspnav SHARED IMPORTED)
|
||||
target_link_libraries(libspnav INTERFACE spnav)
|
||||
message(STATUS "SPNAV library found")
|
||||
else()
|
||||
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
|
||||
@@ -618,10 +699,12 @@ endif()
|
||||
|
||||
set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR})
|
||||
function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
set(_bits 64)
|
||||
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
set(_bits 32)
|
||||
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
||||
set(_arch "x64")
|
||||
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
|
||||
set(_arch "x86")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unable to detect architecture")
|
||||
endif ()
|
||||
|
||||
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
@@ -638,9 +721,9 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
|
||||
endif ()
|
||||
|
||||
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll
|
||||
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll
|
||||
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win${_bits}/WebView2Loader.dll
|
||||
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win-${_arch}/libgmp-10.dll
|
||||
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win-${_arch}/libmpfr-4.dll
|
||||
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win-${_arch}/WebView2Loader.dll
|
||||
DESTINATION ${_out_dir})
|
||||
|
||||
file(COPY ${CMAKE_PREFIX_PATH}/bin/occt/TKBO.dll
|
||||
@@ -708,7 +791,7 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
@@ -735,7 +818,7 @@ endif()
|
||||
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
set(SLIC3R_APP_CMD "orca-slicer")
|
||||
configure_file(${LIBDIR}/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh @ONLY)
|
||||
configure_file(${LIBDIR}/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh USE_SOURCE_PERMISSIONS @ONLY)
|
||||
endif()
|
||||
|
||||
option(BUILD_BBS_TEST_TOOLS "Build bbs test tools" OFF)
|
||||
@@ -748,7 +831,7 @@ endif()
|
||||
if (WIN32)
|
||||
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "./resources")
|
||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ".")
|
||||
elseif (SLIC3R_FHS)
|
||||
# CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
PROJECT_ROOT=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
|
||||
|
||||
set -x
|
||||
|
||||
# Wishlist hint: For developers, creating a Docker Compose
|
||||
# setup with persistent volumes for the build & deps directories
|
||||
# would speed up recompile times significantly. For end users,
|
||||
|
||||
@@ -5,6 +5,8 @@ set -x
|
||||
# -h $HOSTNAME \
|
||||
# If there's problems with the X display, try this
|
||||
# -v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||
# If you get an error like "Authorization required, but no authorization protocol specified," run line 9 in your terminal before rerunning this program
|
||||
# xhost +local:docker
|
||||
docker run \
|
||||
`# Use the hosts networking. Printer wifi and also dbus communication` \
|
||||
--net=host \
|
||||
@@ -20,6 +22,8 @@ docker run \
|
||||
--privileged=true \
|
||||
`# Attach tty for running orca slicer with command line things` \
|
||||
-ti \
|
||||
`# Clean up after yourself` \
|
||||
--rm \
|
||||
`# Pass all parameters from this script to the orca slicer ENTRYPOINT binary` \
|
||||
orcaslicer $*
|
||||
|
||||
|
||||
29
Dockerfile
29
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM docker.io/ubuntu:22.04
|
||||
FROM docker.io/ubuntu:24.04
|
||||
LABEL maintainer "DeftDawg <DeftDawg@gmail.com>"
|
||||
|
||||
# Disable interactive package configuration
|
||||
@@ -32,14 +32,14 @@ RUN apt-get update && apt-get install -y \
|
||||
libgstreamer-plugins-good1.0-dev \
|
||||
libgtk-3-dev \
|
||||
libgtk-3-dev \
|
||||
libosmesa6-dev \
|
||||
libsecret-1-dev \
|
||||
libsoup2.4-dev \
|
||||
libssl3 \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libudev-dev \
|
||||
libwayland-dev \
|
||||
libwebkit2gtk-4.0-dev \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libxkbcommon-dev \
|
||||
locales \
|
||||
locales-all \
|
||||
@@ -64,18 +64,17 @@ WORKDIR OrcaSlicer
|
||||
|
||||
# These can run together, but we run them seperate for podman caching
|
||||
# Update System dependencies
|
||||
RUN ./BuildLinux.sh -u
|
||||
RUN ./build_linux.sh -u
|
||||
|
||||
# Build dependencies in ./deps
|
||||
RUN ./BuildLinux.sh -d; exit 0
|
||||
RUN ./build_linux.sh -dr
|
||||
|
||||
RUN apt-get install -y libcgal-dev
|
||||
# Build slic3r
|
||||
RUN ./BuildLinux.sh -s
|
||||
RUN ./build_linux.sh -sr
|
||||
|
||||
# Build AppImage
|
||||
ENV container podman
|
||||
RUN ./BuildLinux.sh -i
|
||||
RUN ./build_linux.sh -ir
|
||||
|
||||
# It's easier to run Orca Slicer as the same username,
|
||||
# UID and GID as your workstation. Since we bind mount
|
||||
@@ -86,10 +85,16 @@ SHELL ["/bin/bash", "-l", "-c"]
|
||||
ARG USER=root
|
||||
ARG UID=0
|
||||
ARG GID=0
|
||||
RUN [[ "$UID" != "0" ]] \
|
||||
&& groupadd -f -g $GID $USER \
|
||||
&& useradd -u $UID -g $GID $USER
|
||||
|
||||
RUN if [[ "$UID" != "0" ]]; then \
|
||||
# Create group if it doesn't exist \
|
||||
groupadd -f -g $GID $USER; \
|
||||
# Check if user with this UID already exists \
|
||||
if getent passwd $UID > /dev/null 2>&1; then \
|
||||
echo "User with UID $UID already exists, skipping user creation"; \
|
||||
else \
|
||||
useradd -u $UID -g $GID $USER; \
|
||||
fi \
|
||||
fi
|
||||
# Using an entrypoint instead of CMD because the binary
|
||||
# accepts several command line arguments.
|
||||
ENTRYPOINT ["/OrcaSlicer/build/package/bin/orca-slicer"]
|
||||
|
||||
237
README.md
237
README.md
@@ -1,97 +1,147 @@
|
||||
[](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
|
||||
# Orca Slicer
|
||||
Orca Slicer is an open source slicer for FDM printers.
|
||||
<div align="center">
|
||||
|
||||
<picture>
|
||||
<img alt="OrcaSlicer logo" src="resources/images/OrcaSlicer.png" width="15%" height="15%">
|
||||
</picture>
|
||||
|
||||
<a href="https://trendshift.io/repositories/952" target="_blank"><img src="https://trendshift.io/api/badge/repositories/952" alt="SoftFever%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
|
||||
[](https://github.com/SoftFever/OrcaSlicer/stargazers) [](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
|
||||
|
||||
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
|
||||
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
|
||||
<h3>
|
||||
|
||||
# Official links and community
|
||||
|
||||
#### Official Website:
|
||||
<a href="https://www.orcaslicer.com/" style="font-size:2em;">OrcaSlicer.com</a>
|
||||
|
||||
#### Github Repository:
|
||||
<a href="https://github.com/SoftFever/OrcaSlicer"><img src="https://img.shields.io/badge/OrcaSlicer-181717?style=flat&logo=github&logoColor=white" width="200" alt="GitHub Logo"/> </a>
|
||||
|
||||
#### Follow us:
|
||||
<a href="https://twitter.com/real_OrcaSlicer"><img src="https://img.shields.io/badge/real__OrcaSlicer-000000?style=flat&logo=x&logoColor=white" width="200" alt="X Logo"/> </a>
|
||||
|
||||
#### Join our Discord community:
|
||||
<a href="https://discord.gg/P4VE9UY9gJ"><img src="https://img.shields.io/badge/-Discord-5865F2?style=flat&logo=discord&logoColor=fff" width="200" alt="discord logo"/> </a>
|
||||
|
||||
<table border="2" style="border-color: #ffa500; background-color:rgb(232, 220, 180); color: #856404;">
|
||||
<tr>
|
||||
<td>
|
||||
<strong>⚠️ CAUTION:</strong><br><br>
|
||||
There are several clickbait and malicious websites pretending to be Official OrcaSlicer. These sites may redirect you to dangerous downloads or contain misleading information.
|
||||
<br><br>
|
||||
If you come across any of these in search results, please report them as unsafe or spam to help keep the community secure.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
 Join community: [OrcaSlicer Official Discord Server](https://discord.gg/P4VE9UY9gJ)
|
||||
|
||||
# Main features
|
||||
- Auto calibrations for all printers
|
||||
- Sandwich(inner-outer-inner) mode - an improved version of the `External perimeters first` mode
|
||||
- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall)
|
||||
- Polyholes conversion support [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
|
||||
- Klipper support
|
||||
- More granular controls
|
||||
- More features can be found in [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
|
||||
|
||||
- **[Advanced Calibration Tools](https://github.com/SoftFever/OrcaSlicer/wiki/Calibration)**
|
||||
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
|
||||
- **[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_seam)**
|
||||
Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
|
||||
- **[Sandwich Mode](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support**
|
||||
Use varied infill patterns and accurate hole shapes for improved clarity.
|
||||
- **[Overhang](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/SoftFever/OrcaSlicer/wiki#support-settings)**
|
||||
Modify geometry for printable overhangs with precise support placement.
|
||||
- **[Granular Controls](https://github.com/SoftFever/OrcaSlicer/wiki#process-settings) and Customization**
|
||||
Fine-tune print speed, layer height, pressure, and temperature with precision.
|
||||
- **Network Printer Support**
|
||||
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
|
||||
- **[Mouse Ear Brims](https://github.com/SoftFever/OrcaSlicer/wiki/others_settings_brim) & Adaptive Bed Mesh**
|
||||
Automatic brims and adaptive mesh calibration ensure consistent adhesion.
|
||||
- **User-Friendly Interface**
|
||||
Intuitive drag-and-drop design with pre-made profiles for popular printers.
|
||||
- **[Open-Source](https://github.com/SoftFever/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)**
|
||||
Regular updates fueled by continuous community contributions.
|
||||
- **Wide Printer Compatibility**
|
||||
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
|
||||
- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/).
|
||||
|
||||
# Wiki
|
||||
|
||||
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
|
||||
|
||||
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
|
||||
|
||||
- **[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
|
||||
- **[Contribute to the wiki](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-wiki)**
|
||||
|
||||
# Download
|
||||
|
||||
### Stable Release
|
||||
## Stable Release
|
||||
📥 **[Download the Latest Stable Release](https://github.com/SoftFever/OrcaSlicer/releases/latest)**
|
||||
Visit our GitHub Releases page for the latest stable version of Orca Slicer, recommended for most users.
|
||||
|
||||
### Nightly Builds
|
||||
## Nightly Builds
|
||||
🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)**
|
||||
Explore the latest developments in Orca Slicer with our nightly builds. Feedback on these versions is highly appreciated.
|
||||
|
||||
|
||||
# How to install
|
||||
**Windows**:
|
||||
1. Download the installer for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
|
||||
- *For convenience there is also a portable build available.*
|
||||
- *If you have troubles to run the build, you might need to install following runtimes:*
|
||||
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
||||
- [Details of this runtime](https://aka.ms/webview2)
|
||||
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
|
||||
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
||||
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
||||
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
||||
## Windows
|
||||
Download the **Windows Installer exe** for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
|
||||
|
||||
- *For convenience there is also a portable build available.*
|
||||
<details>
|
||||
<summary>Troubleshooting</summary>
|
||||
|
||||
- *If you have troubles to run the build, you might need to install following runtimes:*
|
||||
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
||||
- [Details of this runtime](https://aka.ms/webview2)
|
||||
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
|
||||
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
||||
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
||||
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
||||
</details>
|
||||
|
||||
Windows Package Manager:
|
||||
```shell
|
||||
winget install --id=SoftFever.OrcaSlicer --exact
|
||||
```
|
||||
|
||||
## Mac:
|
||||
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
||||
2. Drag OrcaSlicer.app to Application folder.
|
||||
3. *If you want to run a build from a PR, you also need to follow the instructions below:*
|
||||
<details>
|
||||
<summary>Quarantine</summary>
|
||||
|
||||
**Mac**:
|
||||
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
||||
2. Drag OrcaSlicer.app to Application folder.
|
||||
3. *If you want to run a build from a PR, you also need following instructions below*
|
||||
<details quarantine>
|
||||
- Option 1 (You only need to do this once. After that the app can be opened normally.):
|
||||
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
|
||||
- Step 2: A warning window will pop up, click _Open_
|
||||
|
||||
- Option 2:
|
||||
Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
|
||||
```console
|
||||
softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
|
||||
- Step 2: A warning window will pop up, click _Open_
|
||||
|
||||
- Option 2:
|
||||
Execute this command in terminal:
|
||||
```shell
|
||||
xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
|
||||
```
|
||||
- Option 3:
|
||||
- Option 3:
|
||||
- Step 1: open the app, a warning window will pop up
|
||||

|
||||
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
|
||||

|
||||

|
||||
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
|
||||

|
||||
</details>
|
||||
|
||||
**Linux(Ubuntu)**:
|
||||
1. If you run into trouble to execute it, try this command in terminal:
|
||||
|
||||
## Linux (Ubuntu):
|
||||
1. If you run into trouble executing it, try this command in the terminal:
|
||||
`chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage`
|
||||
|
||||
# How to compile
|
||||
- Windows 64-bit
|
||||
- Tools needed: Visual Studio 2019, Cmake, git, git-lfs, Strawberry Perl.
|
||||
- You will require cmake version 3.14 or later, which is available [on their website](https://cmake.org/download/).
|
||||
- Strawberry Perl is [available on their github repository](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/).
|
||||
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
|
||||
- Note: Don't forget to run `git lfs pull` after cloning the repository to download tools on Windows
|
||||
|
||||
- Mac 64-bit
|
||||
- Tools needed: Xcode, Cmake, git, gettext, libtool, automake, autoconf, texinfo
|
||||
- You can install most of them by running `brew install cmake gettext libtool automake autoconf texinfo`
|
||||
- run `build_release_macos.sh`
|
||||
- To build and debug in XCode:
|
||||
- run `XCode.app`
|
||||
- open ``build_`arch`/OrcaSlicer.xcodeproj``
|
||||
- menu bar: Product => Scheme => OrcaSlicer
|
||||
- menu bar: Product => Scheme => Edit Scheme...
|
||||
- Run => Info tab => Build Configuration: `RelWithDebInfo`
|
||||
- Run => Options tab => Document Versions: uncheck `Allow debugging when browsing versions`
|
||||
- menu bar: Product => Run
|
||||
# How to Compile
|
||||
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-build) page.
|
||||
|
||||
- Ubuntu
|
||||
- Dependencies **Will be auto installed with the shell script**: `libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git texinfo`
|
||||
- run 'sudo ./BuildLinux.sh -u'
|
||||
- run './BuildLinux.sh -dsir'
|
||||
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
|
||||
|
||||
|
||||
# Note:
|
||||
# Klipper Note:
|
||||
If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file.
|
||||
```
|
||||
```gcode
|
||||
# Enable object exclusion
|
||||
[exclude_object]
|
||||
|
||||
@@ -101,57 +151,52 @@ resolution: 0.1
|
||||
```
|
||||
|
||||
# Supports
|
||||
**Orca Slicer** is an open-source project, and I'm deeply grateful to all my sponsors and backers.
|
||||
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
|
||||
**Orca Slicer** is an open-source project and I'm deeply grateful to all my sponsors and backers.
|
||||
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
|
||||
Thank you! :)
|
||||
|
||||
### Sponsors:
|
||||
## Sponsors:
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="https://peopoly.net/">
|
||||
<img src="SoftFever_doc\sponsor_logos\peopoly-standard-logo.png" alt="Peopoly" width="64" height="">
|
||||
<a href="https://qidi3d.com/" style="display:inline-block; border-radius:8px; background:#fff;">
|
||||
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="100" height="100">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
</td>
|
||||
<td>
|
||||
<a href="https://qidi3d.com/">
|
||||
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="64" height="">
|
||||
<a href="https://bigtree-tech.com/" style="display:inline-block; border-radius:8px; background:#222;">
|
||||
<img src="SoftFever_doc\sponsor_logos\BigTreeTech.png" alt="BIGTREE TECH" width="100" height="100">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Backers:
|
||||
Ko-fi supporters: [Backers list](https://github.com/SoftFever/OrcaSlicer/wiki/OrcaSlicer-backers-%E2%80%90-28-Oct-2023)
|
||||
## Backers:
|
||||
**Ko-fi supporters** ☕: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
|
||||
|
||||
Support me
|
||||
[](https://ko-fi.com/G2G5IP3CP)
|
||||
## Support me
|
||||
<a href="https://github.com/sponsors/SoftFever"><img src="https://img.shields.io/badge/GitHub%20Sponsors-30363D?style=flat&logo=GitHub-Sponsors&logoColor=EA4AAA" height="50"></a>
|
||||
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://img.shields.io/badge/Support_me_on_Ko--fi-FF5E5B?style=flat&logo=ko-fi&logoColor=white" height="50"></a>
|
||||
<a href="https://paypal.me/softfever3d"><img src="https://img.shields.io/badge/PayPal-003087?style=flat&logo=paypal&logoColor=fff" height="50"></a>
|
||||
|
||||
## Some background
|
||||
OrcaSlicer is originaly forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
|
||||
|
||||
Bambu Studio is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
|
||||
Orca Slicer incorporates a lot of features from SuperSlicer by @supermerill
|
||||
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr)
|
||||
OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
|
||||
|
||||
[Bambu Studio](https://github.com/bambulab/BambuStudio) is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
|
||||
Orca Slicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill
|
||||
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr).
|
||||
|
||||
# License
|
||||
Orca Slicer is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
|
||||
**Orca Slicer** is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
|
||||
|
||||
Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
|
||||
**Bambu Studio** is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
|
||||
|
||||
PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
|
||||
**PrusaSlicer** is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
|
||||
|
||||
Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
|
||||
**Slic3r** is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
|
||||
|
||||
The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
|
||||
|
||||
Orca Slicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
|
||||
|
||||
The bambu networking plugin is based on non-free libraries from Bambulab. It is optional to the Orca Slicer and provides extended functionalities for Bambulab printer users.
|
||||
|
||||
The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the Orca Slicer and provides extended functionalities for Bambulab printer users.
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Init Version
|
||||
63
SECURITY.md
63
SECURITY.md
@@ -1,32 +1,47 @@
|
||||
POLICY: Our security policy is to avoid leaving the ecosystem worse than we found it. Meaning we are not planning to introduce vulnerabilities into the ecosystem.
|
||||
The OrcaSlicer team and community take all security bugs in OrcaSlicer seriously. Thank you for improving the security of OrcaSlicer. We appreciate your efforts to disclose the issue responsibly, and will make every effort to acknowledge your contributions.
|
||||
# Security Policy
|
||||
|
||||
Report security bugs by emailing the lead maintainer at softfeverever@gmail.com and include the word "SECURITY" in the subject line.
|
||||
At OrcaSlicer, we are committed to maintaining the security of our ecosystem. Our policy is to ensure that we do not introduce vulnerabilities and that any security issues are addressed promptly and responsibly. We appreciate your help in improving the security of OrcaSlicer and thank you for your responsible disclosure.
|
||||
Reporting Security Bugs
|
||||
|
||||
The lead maintainer will acknowledge your email within a week (7 days), and will send a more detailed response up to 48 hours after that indicating the next steps in handling your report. After the initial reply to your report, the security team will endeavor to keep you informed of the progress towards a fix and an announcement. We may ask for additional information or guidance.
|
||||
## To report a security bug, please follow these guidelines:
|
||||
|
||||
OrcaSlicer will confirm the problem and determine the affected versions.
|
||||
OrcaSlicer will audit code to find any similar problems.
|
||||
OrcaSlicer will prepare fixes for all releases still under maintenance. These fixes will be released as fast as possible.
|
||||
Report security bugs in third-party modules to the person or team maintaining the module.
|
||||
* Email Security Bugs:
|
||||
Send an email to the lead maintainer at softfeverever@gmail.com.
|
||||
Include the word "SECURITY" in the subject line of your email.
|
||||
|
||||
SECURITY DISCLOSURE: Your responsibility is to report vulnerabilities to us using the guidelines outlined below.
|
||||
Please give detailed steps on how to disclose the vulnerability. Keep these OWASP guidelines in mind ( https://www.owasp.org/index.php/Vulnerability_Disclosure_Cheat_Sheet ) when creating your disclosure policy.
|
||||
* Response Times:
|
||||
The lead maintainer will acknowledge receipt of your email within one week (7 days).
|
||||
A detailed response will follow within 48 hours, outlining the next steps for handling your report.
|
||||
After the initial reply, the security team will keep you informed about the progress toward a fix and any announcements.
|
||||
|
||||
Below are some recommendations for security disclosures:
|
||||
* Information and Collaboration:
|
||||
We may request additional information or guidance as we work on addressing the issue.
|
||||
|
||||
OrcaSlicer security contact { contact: mailto:softfeverever@gmail.com] }
|
||||
When disclosing vulnerabilities please do the following:
|
||||
Your name and affiliation (if any).
|
||||
Include scope of vulnerability. Let us know who could use this exploit.
|
||||
Document steps to identify the vulnerability. It is important that we can reproduce your findings.
|
||||
Show how to exploit vulnerability, give us an attack scenario.
|
||||
OrcaSlicer Checklist: Security Recommendations
|
||||
Follow these steps to improve security when using OrcaSlicer.
|
||||
* Handling the Report:
|
||||
OrcaSlicer will confirm the problem and determine the affected versions.
|
||||
We will audit the code to find any similar issues and prepare fixes for all releases still under maintenance.
|
||||
Fixes will be released as quickly as possible.
|
||||
|
||||
...SEE SOMETHING
|
||||
...SAY SOMETHING
|
||||
1)...SEE SOMETHING
|
||||
We suggest you goto #2 if this happens.
|
||||
* Third-Party Modules:
|
||||
Report security issues in third-party modules to the respective maintainer of those modules.
|
||||
|
||||
Why? Through experience we have found it is best to goto #2 in this situation.
|
||||
## Security Disclosure Guidelines
|
||||
|
||||
When disclosing a vulnerability, please follow these steps to ensure your report is clear and actionable:
|
||||
|
||||
* Provide Detailed Information:
|
||||
Scope: Clearly define the scope of the vulnerability.
|
||||
Potential Impact: Let us know who could be affected by this exploit.
|
||||
Reproduction Steps: Document detailed steps to reproduce the vulnerability.
|
||||
|
||||
Reference OWASP Guidelines:
|
||||
Follow the <a href="https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html">OWASP Vulnerability Disclosure Cheat Sheet</a> for best practices in vulnerability disclosure.
|
||||
|
||||
## Security Recommendations
|
||||
|
||||
To enhance security when using OrcaSlicer, we recommend following these steps:
|
||||
|
||||
* SEE SOMETHING: If you notice anything suspicious or have concerns, please report it.
|
||||
* SAY SOMETHING: If you have any doubts or need assistance, do not hesitate to contact us.
|
||||
|
||||
### Thank you for your commitment to the security of OrcaSlicer. Your efforts help us maintain a safe and reliable ecosystem.
|
||||
|
||||
BIN
SoftFever_doc/sponsor_logos/BigTreeTech.png
Normal file
BIN
SoftFever_doc/sponsor_logos/BigTreeTech.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 77 KiB |
226
build_linux.sh
Executable file
226
build_linux.sh
Executable file
@@ -0,0 +1,226 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
SCRIPT_PATH=$(dirname $(readlink -f ${0}))
|
||||
|
||||
pushd ${SCRIPT_PATH} > /dev/null
|
||||
|
||||
set -e # Exit immediately if a command exits with a non-zero status.
|
||||
|
||||
function check_available_memory_and_disk() {
|
||||
FREE_MEM_GB=$(free --gibi --total | grep 'Mem' | rev | cut --delimiter=" " --fields=1 | rev)
|
||||
MIN_MEM_GB=10
|
||||
|
||||
FREE_DISK_KB=$(df --block-size=1K . | tail -1 | awk '{print $4}')
|
||||
MIN_DISK_KB=$((10 * 1024 * 1024))
|
||||
|
||||
if [[ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]] ; then
|
||||
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (system has only ${FREE_MEM_GB}G available)"
|
||||
echo && free --human && echo
|
||||
echo "Invoke with -r to skip RAM and disk checks."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]] ; then
|
||||
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo ${MIN_DISK_KB} |awk '{ printf "%.1fG\n", $1/1024/1024; }') (system has only $(echo ${FREE_DISK_KB} | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
|
||||
echo && df --human-readable . && echo
|
||||
echo "Invoke with -r to skip ram and disk checks."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-h][-i][-j N][-p][-r][-s][-u][-l]"
|
||||
echo " -1: limit builds to one core (where possible)"
|
||||
echo " -j N: limit builds to N cores (where possible)"
|
||||
echo " -b: build in debug mode"
|
||||
echo " -c: force a clean build"
|
||||
echo " -C: enable ANSI-colored compile output (GNU/Clang only)"
|
||||
echo " -d: download and build dependencies in ./deps/ (build prerequisite)"
|
||||
echo " -h: prints this help text"
|
||||
echo " -i: build the Orca Slicer AppImage (optional)"
|
||||
echo " -p: boost ccache hit rate by disabling precompiled headers (default: ON)"
|
||||
echo " -r: skip RAM and disk checks (low RAM compiling)"
|
||||
echo " -s: build the Orca Slicer (optional)"
|
||||
echo " -u: install system dependencies (asks for sudo password; build prerequisite)"
|
||||
echo " -l: use Clang instead of GCC (default: GCC)"
|
||||
echo "For a first use, you want to './${SCRIPT_NAME} -u'"
|
||||
echo " and then './${SCRIPT_NAME} -dsi'"
|
||||
}
|
||||
|
||||
SLIC3R_PRECOMPILED_HEADERS="ON"
|
||||
|
||||
unset name
|
||||
while getopts ":1j:bcCdhiprsul" opt ; do
|
||||
case ${opt} in
|
||||
1 )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
;;
|
||||
j )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=$OPTARG
|
||||
;;
|
||||
b )
|
||||
BUILD_DEBUG="1"
|
||||
;;
|
||||
c )
|
||||
CLEAN_BUILD=1
|
||||
;;
|
||||
C )
|
||||
COLORED_OUTPUT="-DCOLORED_OUTPUT=ON"
|
||||
;;
|
||||
d )
|
||||
BUILD_DEPS="1"
|
||||
;;
|
||||
h ) usage
|
||||
exit 0
|
||||
;;
|
||||
i )
|
||||
BUILD_IMAGE="1"
|
||||
;;
|
||||
p )
|
||||
SLIC3R_PRECOMPILED_HEADERS="OFF"
|
||||
;;
|
||||
r )
|
||||
SKIP_RAM_CHECK="1"
|
||||
;;
|
||||
s )
|
||||
BUILD_ORCA="1"
|
||||
;;
|
||||
u )
|
||||
UPDATE_LIB="1"
|
||||
;;
|
||||
l )
|
||||
USE_CLANG="1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ${OPTIND} -eq 1 ] ; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# cmake 4.x compatibility workaround
|
||||
export CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
|
||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '"')
|
||||
DISTRIBUTION_LIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
|
||||
# Check for direct distribution match to Ubuntu/Debian
|
||||
if [ "${DISTRIBUTION}" == "ubuntu" ] || [ "${DISTRIBUTION}" == "linuxmint" ] ; then
|
||||
DISTRIBUTION="debian"
|
||||
# Check if distribution is Debian/Ubuntu-like based on ID_LIKE
|
||||
elif [[ "${DISTRIBUTION_LIKE}" == *"debian"* ]] || [[ "${DISTRIBUTION_LIKE}" == *"ubuntu"* ]] ; then
|
||||
DISTRIBUTION="debian"
|
||||
elif [[ "${DISTRIBUTION_LIKE}" == *"arch"* ]] ; then
|
||||
DISTRIBUTION="arch"
|
||||
fi
|
||||
|
||||
if [ ! -f ./linux.d/${DISTRIBUTION} ] ; then
|
||||
echo "Your distribution \"${DISTRIBUTION}\" is not supported by system-dependency scripts in ./linux.d/"
|
||||
echo "Please resolve dependencies manually and contribute a script for your distribution to upstream."
|
||||
exit 1
|
||||
else
|
||||
echo "resolving system dependencies for distribution \"${DISTRIBUTION}\" ..."
|
||||
source ./linux.d/${DISTRIBUTION}
|
||||
fi
|
||||
|
||||
echo "FOUND_GTK3=${FOUND_GTK3}"
|
||||
if [[ -z "${FOUND_GTK3_DEV}" ]] ; then
|
||||
echo "Error, you must install the dependencies before."
|
||||
echo "Use option -u with sudo"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Changing date in version..."
|
||||
{
|
||||
# change date in version
|
||||
sed --in-place "s/+UNKNOWN/_$(date '+%F')/" version.inc
|
||||
}
|
||||
echo "done"
|
||||
|
||||
|
||||
if ! [[ -n "${SKIP_RAM_CHECK}" ]] ; then
|
||||
check_available_memory_and_disk
|
||||
fi
|
||||
|
||||
export CMAKE_C_CXX_COMPILER_CLANG=""
|
||||
if [[ -n "${USE_CLANG}" ]] ; then
|
||||
export CMAKE_C_CXX_COMPILER_CLANG="-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++"
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_DEPS}" ]] ; then
|
||||
echo "Configuring dependencies..."
|
||||
BUILD_ARGS="${DEPS_EXTRA_BUILD_ARGS} -DDEP_WX_GTK3=ON"
|
||||
if [[ -n "${CLEAN_BUILD}" ]]
|
||||
then
|
||||
rm -fr deps/build
|
||||
fi
|
||||
if [ ! -d "deps/build" ]
|
||||
then
|
||||
mkdir deps/build
|
||||
fi
|
||||
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
||||
# build deps with debug and release else cmake will not find required sources
|
||||
if [ ! -d "deps/build/release" ] ; then
|
||||
mkdir deps/build/release
|
||||
fi
|
||||
cmake ${CMAKE_C_CXX_COMPILER_CLANG} -S deps -B deps/build/release -DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} -G Ninja -DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" ${COLORED_OUTPUT} ${BUILD_ARGS}
|
||||
cmake --build deps/build/release
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
|
||||
fi
|
||||
|
||||
echo "cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${BUILD_ARGS}"
|
||||
cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${COLORED_OUTPUT} ${BUILD_ARGS}
|
||||
cmake --build deps/build
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_ORCA}" ]] ; then
|
||||
echo "Configuring OrcaSlicer..."
|
||||
if [[ -n "${CLEAN_BUILD}" ]] ; then
|
||||
rm --force --recursive build
|
||||
fi
|
||||
BUILD_ARGS="${ORCA_EXTRA_BUILD_ARGS}"
|
||||
if [[ -n "${FOUND_GTK3_DEV}" ]] ; then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DSLIC3R_GTK=3"
|
||||
fi
|
||||
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
|
||||
else
|
||||
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
|
||||
fi
|
||||
|
||||
CMAKE_CMD="cmake -S . -B build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja \
|
||||
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
|
||||
-DCMAKE_PREFIX_PATH="${SCRIPT_PATH}/deps/build/destdir/usr/local" \
|
||||
-DSLIC3R_STATIC=1 \
|
||||
-DORCA_TOOLS=ON \
|
||||
${COLORED_OUTPUT} \
|
||||
${BUILD_ARGS}"
|
||||
echo -e "${CMAKE_CMD}"
|
||||
${CMAKE_CMD}
|
||||
echo "done"
|
||||
echo "Building OrcaSlicer ..."
|
||||
cmake --build build --target OrcaSlicer
|
||||
echo "Building OrcaSlicer_profile_validator .."
|
||||
cmake --build build --target OrcaSlicer_profile_validator
|
||||
./run_gettext.sh
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_IMAGE}" || -n "${BUILD_ORCA}" ]] ; then
|
||||
pushd build > /dev/null
|
||||
echo "[9/9] Generating Linux app..."
|
||||
build_linux_image="./src/build_linux_image.sh"
|
||||
if [[ -e ${build_linux_image} ]] ; then
|
||||
extra_script_args=""
|
||||
if [[ -n "${BUILD_IMAGE}" ]] ; then
|
||||
extra_script_args="-i"
|
||||
fi
|
||||
${build_linux_image} ${extra_script_args}
|
||||
|
||||
echo "done"
|
||||
fi
|
||||
popd > /dev/null # build
|
||||
fi
|
||||
|
||||
popd > /dev/null # ${SCRIPT_PATH}
|
||||
@@ -24,7 +24,7 @@ while getopts ":dpa:snt:xbc:h" opt; do
|
||||
export OSX_DEPLOYMENT_TARGET="$OPTARG"
|
||||
;;
|
||||
x )
|
||||
export SLICER_CMAKE_GENERATOR="Ninja"
|
||||
export SLICER_CMAKE_GENERATOR="Ninja Multi-Config"
|
||||
export SLICER_BUILD_TARGET="all"
|
||||
export DEPS_CMAKE_GENERATOR="Ninja"
|
||||
;;
|
||||
@@ -34,15 +34,19 @@ while getopts ":dpa:snt:xbc:h" opt; do
|
||||
c )
|
||||
export BUILD_CONFIG="$OPTARG"
|
||||
;;
|
||||
1 )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
;;
|
||||
h ) echo "Usage: ./build_release_macos.sh [-d]"
|
||||
echo " -d: Build deps only"
|
||||
echo " -a: Set ARCHITECTURE (arm64 or x86_64)"
|
||||
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
|
||||
echo " -s: Build slicer only"
|
||||
echo " -n: Nightly build"
|
||||
echo " -t: Specify minimum version of the target platform, default is 11.3"
|
||||
echo " -x: Use Ninja CMake generator, default is Xcode"
|
||||
echo " -x: Use Ninja Multi-Config CMake generator, default is Xcode"
|
||||
echo " -b: Build without reconfiguring CMake"
|
||||
echo " -c: Set CMake build configuration, default is Release"
|
||||
echo " -1: Use single job for building"
|
||||
exit 0
|
||||
;;
|
||||
* )
|
||||
@@ -53,8 +57,8 @@ done
|
||||
# Set defaults
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
ARCH="$(uname -m)"
|
||||
export ARCH
|
||||
ARCH="$(uname -m)"
|
||||
export ARCH
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_CONFIG" ]; then
|
||||
@@ -103,102 +107,175 @@ echo
|
||||
# fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||
DEPS_DIR="$PROJECT_DIR/deps"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_deps"
|
||||
|
||||
# Fix for Multi-config generators
|
||||
if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then
|
||||
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
||||
else
|
||||
export BUILD_DIR_CONFIG_SUBDIR=""
|
||||
fi
|
||||
# For Multi-config generators like Ninja and Xcode
|
||||
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
||||
|
||||
function build_deps() {
|
||||
echo "Building deps..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$DEPS"
|
||||
cd "$DEPS_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake .. \
|
||||
-G "${DEPS_CMAKE_GENERATOR}" \
|
||||
-DDESTDIR="$DEPS" \
|
||||
-DOPENSSL_ARCH="darwin64-${ARCH}-cc" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
# iterate over two architectures: x86_64 and arm64
|
||||
for _ARCH in x86_64 arm64; do
|
||||
# if ARCH is universal or equal to _ARCH
|
||||
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
|
||||
|
||||
echo "Building deps..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$DEPS"
|
||||
cd "$DEPS_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake "${DEPS_DIR}" \
|
||||
-G "${DEPS_CMAKE_GENERATOR}" \
|
||||
-DDESTDIR="$DEPS" \
|
||||
-DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
fi
|
||||
cmake --build . --config "$BUILD_CONFIG" --target deps
|
||||
)
|
||||
fi
|
||||
cmake --build . --config "$BUILD_CONFIG" --target deps
|
||||
)
|
||||
done
|
||||
}
|
||||
|
||||
function pack_deps() {
|
||||
echo "Packing deps..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$DEPS"
|
||||
cd "$DEPS_BUILD_DIR"
|
||||
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "OrcaSlicer_dep_$ARCH"
|
||||
cd "$DEPS_DIR"
|
||||
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build"
|
||||
)
|
||||
}
|
||||
|
||||
function build_slicer() {
|
||||
echo "Building slicer..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$PROJECT_BUILD_DIR"
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake .. \
|
||||
-G "${SLICER_CMAKE_GENERATOR}" \
|
||||
-DBBL_RELEASE_TO_PUBLIC=1 \
|
||||
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
|
||||
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_MACOSX_RPATH=ON \
|
||||
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
|
||||
-DCMAKE_MACOSX_BUNDLE=ON \
|
||||
-DCMAKE_OSX_ARCHITECTURES="${ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
fi
|
||||
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
||||
)
|
||||
# iterate over two architectures: x86_64 and arm64
|
||||
for _ARCH in x86_64 arm64; do
|
||||
# if ARCH is universal or equal to _ARCH
|
||||
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||
|
||||
echo "Verify localization with gettext..."
|
||||
(
|
||||
cd "$PROJECT_DIR"
|
||||
./run_gettext.sh
|
||||
)
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
|
||||
|
||||
echo "Fix macOS app package..."
|
||||
(
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
mkdir -p OrcaSlicer
|
||||
cd OrcaSlicer
|
||||
# remove previously built app
|
||||
rm -rf ./OrcaSlicer.app
|
||||
# fully copy newly built app
|
||||
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
|
||||
# fix resources
|
||||
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
|
||||
rm ./OrcaSlicer.app/Contents/Resources
|
||||
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
|
||||
# delete .DS_Store file
|
||||
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
|
||||
)
|
||||
echo "Building slicer for $_ARCH..."
|
||||
(
|
||||
set -x
|
||||
mkdir -p "$PROJECT_BUILD_DIR"
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
if [ "1." != "$BUILD_ONLY". ]; then
|
||||
cmake "${PROJECT_DIR}" \
|
||||
-G "${SLICER_CMAKE_GENERATOR}" \
|
||||
-DBBL_RELEASE_TO_PUBLIC=1 \
|
||||
-DORCA_TOOLS=ON \
|
||||
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
|
||||
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||
-DCMAKE_MACOSX_RPATH=ON \
|
||||
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
|
||||
-DCMAKE_MACOSX_BUNDLE=ON \
|
||||
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||
fi
|
||||
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
||||
)
|
||||
|
||||
# extract version
|
||||
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
|
||||
# ver="_V${ver//\"}"
|
||||
# echo $PWD
|
||||
# if [ "1." != "$NIGHTLY_BUILD". ];
|
||||
# then
|
||||
# ver=${ver}_dev
|
||||
# fi
|
||||
echo "Verify localization with gettext..."
|
||||
(
|
||||
cd "$PROJECT_DIR"
|
||||
./run_gettext.sh
|
||||
)
|
||||
|
||||
# zip -FSr OrcaSlicer${ver}_Mac_${ARCH}.zip OrcaSlicer.app
|
||||
echo "Fix macOS app package..."
|
||||
(
|
||||
cd "$PROJECT_BUILD_DIR"
|
||||
mkdir -p OrcaSlicer
|
||||
cd OrcaSlicer
|
||||
# remove previously built app
|
||||
rm -rf ./OrcaSlicer.app
|
||||
# fully copy newly built app
|
||||
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
|
||||
# fix resources
|
||||
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
|
||||
rm ./OrcaSlicer.app/Contents/Resources
|
||||
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
|
||||
# delete .DS_Store file
|
||||
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
|
||||
|
||||
# Copy OrcaSlicer_profile_validator.app if it exists
|
||||
if [ -f "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
echo "Copying OrcaSlicer_profile_validator.app..."
|
||||
rm -rf ./OrcaSlicer_profile_validator.app
|
||||
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app" ./OrcaSlicer_profile_validator.app
|
||||
# delete .DS_Store file
|
||||
find ./OrcaSlicer_profile_validator.app/ -name '.DS_Store' -delete
|
||||
fi
|
||||
)
|
||||
|
||||
# extract version
|
||||
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
|
||||
# ver="_V${ver//\"}"
|
||||
# echo $PWD
|
||||
# if [ "1." != "$NIGHTLY_BUILD". ];
|
||||
# then
|
||||
# ver=${ver}_dev
|
||||
# fi
|
||||
|
||||
# zip -FSr OrcaSlicer${ver}_Mac_${_ARCH}.zip OrcaSlicer.app
|
||||
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function build_universal() {
|
||||
echo "Building universal binary..."
|
||||
|
||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||
|
||||
# Create universal binary
|
||||
echo "Creating universal binary..."
|
||||
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
|
||||
mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer"
|
||||
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app"
|
||||
rm -rf "$UNIVERSAL_APP"
|
||||
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
|
||||
|
||||
# Get the binary path inside the .app bundle
|
||||
BINARY_PATH="Contents/MacOS/OrcaSlicer"
|
||||
|
||||
# Create universal binary using lipo
|
||||
lipo -create \
|
||||
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||
-output "$UNIVERSAL_APP/$BINARY_PATH"
|
||||
|
||||
echo "Universal binary created at $UNIVERSAL_APP"
|
||||
|
||||
# Create universal binary for profile validator if it exists
|
||||
if [ -f "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ] && \
|
||||
[ -f "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||
echo "Creating universal binary for OrcaSlicer_profile_validator..."
|
||||
UNIVERSAL_VALIDATOR_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer_profile_validator.app"
|
||||
rm -rf "$UNIVERSAL_VALIDATOR_APP"
|
||||
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app" "$UNIVERSAL_VALIDATOR_APP"
|
||||
|
||||
# Get the binary path inside the profile validator .app bundle
|
||||
VALIDATOR_BINARY_PATH="Contents/MacOS/OrcaSlicer_profile_validator"
|
||||
|
||||
# Create universal binary using lipo
|
||||
lipo -create \
|
||||
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||
-output "$UNIVERSAL_VALIDATOR_APP/$VALIDATOR_BINARY_PATH"
|
||||
|
||||
echo "Universal binary for OrcaSlicer_profile_validator created at $UNIVERSAL_VALIDATOR_APP"
|
||||
fi
|
||||
}
|
||||
|
||||
case "${BUILD_TARGET}" in
|
||||
@@ -218,6 +295,10 @@ case "${BUILD_TARGET}" in
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
|
||||
build_universal
|
||||
fi
|
||||
|
||||
if [ "1." == "$PACK_DEPS". ]; then
|
||||
pack_deps
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@REM OcarSlicer build script for Windows
|
||||
@REM OrcaSlicer build script for Windows
|
||||
@echo off
|
||||
set WP=%CD%
|
||||
|
||||
@@ -44,9 +44,10 @@ if "%1"=="slicer" (
|
||||
)
|
||||
echo "building deps.."
|
||||
|
||||
echo cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
||||
cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
||||
echo on
|
||||
cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%DEPS%" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
||||
cmake --build . --config %build_type% --target deps -- -m
|
||||
@echo off
|
||||
|
||||
if "%1"=="deps" exit /b 0
|
||||
|
||||
@@ -56,9 +57,10 @@ cd %WP%
|
||||
mkdir %build_dir%
|
||||
cd %build_dir%
|
||||
|
||||
echo cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0"
|
||||
echo on
|
||||
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DORCA_TOOLS=ON -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="%WindowsSdkDir%Include\%WindowsSDKVersion%\"
|
||||
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||
@echo off
|
||||
cd ..
|
||||
call run_gettext.bat
|
||||
cd %build_dir%
|
||||
|
||||
15
cmake/modules/Findlibnoise.cmake
Normal file
15
cmake/modules/Findlibnoise.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
find_path(LIBNOISE_INCLUDE_DIR libnoise/noise.h)
|
||||
find_library(LIBNOISE_LIBRARY NAMES libnoise libnoise_static liblibnoise_static)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(libnoise DEFAULT_MSG
|
||||
LIBNOISE_LIBRARY
|
||||
LIBNOISE_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(libnoise_FOUND)
|
||||
add_library(noise::noise STATIC IMPORTED)
|
||||
set_target_properties(noise::noise PROPERTIES
|
||||
IMPORTED_LOCATION "${LIBNOISE_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LIBNOISE_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
@@ -26,17 +26,19 @@
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>ATSApplicationFontsPath</key>
|
||||
<string>fonts/</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>orcasliceropen url</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>orcasliceropen</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>OrcaSlicer Downloads</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>orcaslicer</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
||||
59
deps/CGAL/0001-clang19.patch
vendored
Normal file
59
deps/CGAL/0001-clang19.patch
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
--- a/BGL/include/CGAL/boost/graph/iterator.h 2022-10-07 19:04:41 UTC
|
||||
+++ b/BGL/include/CGAL/boost/graph/iterator.h
|
||||
@@ -213,18 +213,7 @@ class Halfedge_around_source_iterator { (public)
|
||||
{}
|
||||
|
||||
#ifndef DOXYGEN_RUNNING
|
||||
- // design patter: "safe bool"
|
||||
- // will be replaced by explicit operator bool with C++11
|
||||
- typedef void (Halfedge_around_source_iterator::*bool_type)() const;
|
||||
|
||||
- void this_type_does_not_support_comparisons() const {}
|
||||
-
|
||||
- operator bool_type() const
|
||||
- {
|
||||
- return (! (this->base() == nullptr)) ?
|
||||
- &Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
|
||||
- }
|
||||
-
|
||||
bool operator==( const Self& i) const {
|
||||
CGAL_assertion( anchor == anchor);
|
||||
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
|
||||
@@ -313,18 +302,7 @@ class Halfedge_around_target_iterator { (public)
|
||||
{}
|
||||
|
||||
#ifndef DOXYGEN_RUNNING
|
||||
- // design patter: "safe bool"
|
||||
- // will be replaced by explicit operator bool with C++11
|
||||
- typedef void (Halfedge_around_target_iterator::*bool_type)() const;
|
||||
|
||||
- void this_type_does_not_support_comparisons() const {}
|
||||
-
|
||||
- operator bool_type() const
|
||||
- {
|
||||
- return (! (this->base() == nullptr)) ?
|
||||
- &Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
|
||||
- }
|
||||
-
|
||||
bool operator==( const Self& i) const {
|
||||
CGAL_assertion( anchor == anchor);
|
||||
return ( g == i.g) && ( pos == i.pos) && ( winding == i.winding);
|
||||
@@ -411,18 +389,6 @@ class Halfedge_around_face_iterator { (public)
|
||||
const value_type& operator * ( ) const { return pos; }
|
||||
pointer operator -> ( ) { return &pos; }
|
||||
const value_type* operator -> ( ) const { return &pos; }
|
||||
-
|
||||
- // design patter: "safe bool"
|
||||
- // will be replaced by explicit operator bool with C++11
|
||||
- typedef void (Halfedge_around_face_iterator::*bool_type)() const;
|
||||
-
|
||||
- void this_type_does_not_support_comparisons() const {}
|
||||
-
|
||||
- operator bool_type() const
|
||||
- {
|
||||
- return (! (this->base() == nullptr)) ?
|
||||
- &Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
|
||||
- }
|
||||
|
||||
bool operator==( const Self& i) const {
|
||||
CGAL_assertion( anchor == anchor);
|
||||
5
deps/CGAL/CGAL.cmake
vendored
5
deps/CGAL/CGAL.cmake
vendored
@@ -1,3 +1,7 @@
|
||||
if (IN_GIT_REPO)
|
||||
set(CGAL_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_CGAL-prefix/src/dep_CGAL)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(
|
||||
CGAL
|
||||
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
|
||||
@@ -5,6 +9,7 @@ orcaslicer_add_cmake_project(
|
||||
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
|
||||
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
|
||||
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
|
||||
PATCH_COMMAND git apply ${CGAL_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
|
||||
DEPENDS dep_Boost dep_GMP dep_MPFR
|
||||
)
|
||||
|
||||
|
||||
156
deps/CMakeLists.txt
vendored
156
deps/CMakeLists.txt
vendored
@@ -30,6 +30,10 @@ if (APPLE)
|
||||
|
||||
endif ()
|
||||
|
||||
if(POLICY CMP0135) # DOWNLOAD_EXTRACT_TIMESTAMP
|
||||
cmake_policy(SET CMP0135 NEW)
|
||||
endif()
|
||||
|
||||
project(OrcaSlicer-deps)
|
||||
|
||||
include(ExternalProject)
|
||||
@@ -41,7 +45,11 @@ if (NPROC EQUAL 0)
|
||||
endif ()
|
||||
|
||||
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
|
||||
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.")
|
||||
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.")
|
||||
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
|
||||
if (NOT FLATPAK)
|
||||
set(DESTDIR "${DESTDIR}/usr/local/")
|
||||
endif()
|
||||
|
||||
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
|
||||
@@ -52,10 +60,6 @@ endif ()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
||||
else()
|
||||
if(POLICY CMP0135) # DOWNLOAD_EXTRACT_TIMESTAMP
|
||||
cmake_policy(SET CMP0135 NEW)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(IS_CROSS_COMPILE FALSE)
|
||||
@@ -84,7 +88,7 @@ endif ()
|
||||
# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF)
|
||||
|
||||
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR}")
|
||||
message(STATUS "OrcaSlicer dowload dir for source packages: ${DEP_DOWNLOAD_DIR}")
|
||||
message(STATUS "OrcaSlicer download dir for source packages: ${DEP_DOWNLOAD_DIR}")
|
||||
message(STATUS "OrcaSlicer deps debug build: ${DEP_DEBUG}")
|
||||
|
||||
find_package(Git REQUIRED)
|
||||
@@ -120,13 +124,13 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
||||
ExternalProject_Add(
|
||||
dep_${projectname}
|
||||
EXCLUDE_FROM_ALL ON
|
||||
INSTALL_DIR ${DESTDIR}/usr/local
|
||||
INSTALL_DIR ${DESTDIR}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
||||
${_gen}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
|
||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}/usr/local
|
||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
||||
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||
@@ -140,16 +144,26 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
||||
)
|
||||
else()
|
||||
elseif(FLATPAK)
|
||||
# the only reason this is here is because of the HACK at the bottom for ci
|
||||
#
|
||||
# note for future devs: shared libs may actually create a size reduction
|
||||
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
|
||||
# so, as much as I would like to use that, it's not happening
|
||||
ExternalProject_Add(
|
||||
dep_${projectname}
|
||||
EXCLUDE_FROM_ALL ON
|
||||
INSTALL_DIR ${DESTDIR}/usr/local
|
||||
INSTALL_DIR ${DESTDIR}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
||||
${_gen}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
|
||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}/usr/local
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
|
||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
||||
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
${_cmake_osx_arch}
|
||||
"${_configs_line}"
|
||||
@@ -158,6 +172,29 @@ else()
|
||||
${P_ARGS_UNPARSED_ARGUMENTS}
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
||||
# HACK: save space after each compile job, because CI
|
||||
# reasoning: cmake changes directory after this command, so just keep only the folders
|
||||
# so that it can navigate out
|
||||
COMMAND find "${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/" -type f -delete
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(
|
||||
dep_${projectname}
|
||||
EXCLUDE_FROM_ALL ON
|
||||
INSTALL_DIR ${DESTDIR}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
||||
${_gen}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
${_cmake_osx_arch}
|
||||
"${_configs_line}"
|
||||
${DEP_CMAKE_OPTS}
|
||||
${P_ARGS_CMAKE_ARGS}
|
||||
${P_ARGS_UNPARSED_ARGUMENTS}
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
||||
)
|
||||
|
||||
endif()
|
||||
@@ -166,13 +203,13 @@ endfunction(orcaslicer_add_cmake_project)
|
||||
|
||||
|
||||
if (MSVC)
|
||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
message(STATUS "\nDetected 64-bit compiler => building 64-bit deps bundle\n")
|
||||
set(DEPS_BITS 64)
|
||||
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
||||
message(STATUS "\nDetected X64 compiler => building X64 deps bundle\n")
|
||||
set(DEPS_ARCH "x64")
|
||||
include("deps-windows.cmake")
|
||||
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
||||
message(STATUS "\nDetected 32-bit compiler => building 32-bit deps bundle\n")
|
||||
set(DEPS_BITS 32)
|
||||
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
|
||||
message(STATUS "\nDetected X86 compiler => building X86 deps bundle\n")
|
||||
set(DEPS_ARCH "x86")
|
||||
include("deps-windows.cmake")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unable to detect architecture")
|
||||
@@ -203,6 +240,19 @@ else()
|
||||
include("deps-linux.cmake")
|
||||
endif()
|
||||
|
||||
if(FLATPAK)
|
||||
# flatpak bundles some deps with the layer, so attempt to find them first
|
||||
# also, yes, this reduces CI by not needing to vendor certain deps
|
||||
find_package(ZLIB)
|
||||
find_package(PNG)
|
||||
find_package(EXPAT)
|
||||
find_package(CURL)
|
||||
find_package(JPEG)
|
||||
find_package(Freetype)
|
||||
find_package(OpenSSL 1.1...<3.2)
|
||||
find_package(CURL)
|
||||
endif()
|
||||
|
||||
set(ZLIB_PKG "")
|
||||
if (NOT ZLIB_FOUND)
|
||||
include(ZLIB/ZLIB.cmake)
|
||||
@@ -214,6 +264,7 @@ if (NOT PNG_FOUND)
|
||||
set(PNG_PKG dep_PNG)
|
||||
endif ()
|
||||
set(EXPAT_PKG "")
|
||||
find_package(EXPAT)
|
||||
if (NOT EXPAT_FOUND)
|
||||
include(EXPAT/EXPAT.cmake)
|
||||
set(EXPAT_PKG dep_EXPAT)
|
||||
@@ -226,6 +277,7 @@ include(Boost/Boost.cmake)
|
||||
include(Cereal/Cereal.cmake)
|
||||
include(Qhull/Qhull.cmake)
|
||||
include(GLEW/GLEW.cmake)
|
||||
|
||||
include(GLFW/GLFW.cmake)
|
||||
include(OpenCSG/OpenCSG.cmake)
|
||||
|
||||
@@ -240,36 +292,83 @@ include(MPFR/MPFR.cmake)
|
||||
include(CGAL/CGAL.cmake)
|
||||
|
||||
include(NLopt/NLopt.cmake)
|
||||
include(libnoise/libnoise.cmake)
|
||||
|
||||
include(OpenSSL/OpenSSL.cmake)
|
||||
|
||||
# I *think* 1.1 is used for *just* md5 hashing?
|
||||
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
|
||||
# a grep across the repo shows it is used for other things
|
||||
# TODO: update openssl and everything that uses <openssl/md5.h>
|
||||
set(OPENSSL_PKG "")
|
||||
if(NOT OPENSSL_FOUND)
|
||||
include(OpenSSL/OpenSSL.cmake)
|
||||
set(OPENSSL_PKG dep_OpenSSL)
|
||||
endif()
|
||||
|
||||
# we don't want to load a "wrong" openssl when loading curl
|
||||
# so, just don't even bother
|
||||
# ...i think this is how it works? change if wrong
|
||||
set(CURL_PKG "")
|
||||
if (NOT CURL_FOUND)
|
||||
if (NOT OPENSSL_FOUND OR NOT CURL_FOUND)
|
||||
include(CURL/CURL.cmake)
|
||||
set(CURL_PKG dep_CURL)
|
||||
endif ()
|
||||
|
||||
include(JPEG/JPEG.cmake)
|
||||
include(TIFF/TIFF.cmake)
|
||||
include(wxWidgets/wxWidgets.cmake)
|
||||
set(JPEG_PKG "")
|
||||
if (NOT JPEG_FOUND)
|
||||
include(JPEG/JPEG.cmake)
|
||||
set(JPEG_PKG dep_JPEG)
|
||||
endif()
|
||||
|
||||
# flatpak builds wxwidgets separately
|
||||
set(WXWIDGETS_PKG "")
|
||||
if (NOT FLATPAK)
|
||||
include(wxWidgets/wxWidgets.cmake)
|
||||
set(WXWIDGETS_PKG "dep_wxWidgets")
|
||||
endif()
|
||||
|
||||
set(FREETYPE_PKG "")
|
||||
if(NOT FREETYPE_FOUND)
|
||||
include(FREETYPE/FREETYPE.cmake)
|
||||
set(FREETYPE_PKG "dep_FREETYPE")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-work-tree
|
||||
RESULT_VARIABLE REV_PARSE_RESULT
|
||||
OUTPUT_VARIABLE REV_PARSE_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Will output "true" and have a 0 return code if within a git repo
|
||||
if((REV_PARSE_RESULT EQUAL 0) AND (REV_PARSE_OUTPUT STREQUAL "true"))
|
||||
set(IN_GIT_REPO TRUE)
|
||||
# Find relative path from root to source used for adjusting patch command
|
||||
file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR})
|
||||
endif ()
|
||||
|
||||
include(OCCT/OCCT.cmake)
|
||||
include(FREETYPE/FREETYPE.cmake)
|
||||
include(OpenCV/OpenCV.cmake)
|
||||
|
||||
set(_dep_list
|
||||
dep_Boost
|
||||
dep_TBB
|
||||
${OPENSSL_PKG}
|
||||
${CURL_PKG}
|
||||
dep_wxWidgets
|
||||
${WXWIDGETS_PKG}
|
||||
dep_Cereal
|
||||
dep_NLopt
|
||||
dep_OpenVDB
|
||||
dep_OpenCSG
|
||||
dep_OpenCV
|
||||
dep_CGAL
|
||||
dep_OpenSSL
|
||||
dep_GLFW
|
||||
dep_OCCT
|
||||
${FREETYPE_PKG}
|
||||
${PNG_PKG}
|
||||
${ZLIB_PKG}
|
||||
${EXPAT_PKG}
|
||||
dep_libnoise
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
@@ -281,9 +380,6 @@ else()
|
||||
#list(APPEND _dep_list "dep_libigl")
|
||||
endif()
|
||||
|
||||
list(APPEND _dep_list "dep_OCCT")
|
||||
list(APPEND _dep_list "dep_FREETYPE")
|
||||
|
||||
add_custom_target(deps ALL DEPENDS ${_dep_list})
|
||||
|
||||
# Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands
|
||||
|
||||
7
deps/CURL/CURL.cmake
vendored
7
deps/CURL/CURL.cmake
vendored
@@ -72,9 +72,10 @@ orcaslicer_add_cmake_project(CURL
|
||||
${_curl_platform_flags}
|
||||
)
|
||||
|
||||
# if (APPLE OR (CMAKE_SYSTEM_NAME STREQUAL "Linux"))
|
||||
add_dependencies(dep_CURL dep_OpenSSL)
|
||||
# endif ()
|
||||
if(NOT OPENSSL_FOUND)
|
||||
# (openssl may or may not be built)
|
||||
add_dependencies(dep_CURL ${OPENSSL_PKG})
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_CURL)
|
||||
|
||||
2
deps/FREETYPE/FREETYPE.cmake
vendored
2
deps/FREETYPE/FREETYPE.cmake
vendored
@@ -11,7 +11,7 @@ else()
|
||||
endif()
|
||||
|
||||
orcaslicer_add_cmake_project(FREETYPE
|
||||
URL https://mirror.ossplanet.net/nongnu/freetype/freetype-2.12.1.tar.gz
|
||||
URL https://github.com/SoftFever/orca_deps/releases/download/freetype-2.12.1.tar.gz/freetype-2.12.1.tar.gz
|
||||
URL_HASH SHA256=efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
|
||||
#DEPENDS ${ZLIB_PKG}
|
||||
#"${_patch_step}"
|
||||
|
||||
7
deps/GLEW/glew/README.md
vendored
7
deps/GLEW/glew/README.md
vendored
@@ -22,7 +22,6 @@ https://github.com/nigels-com/glew
|
||||
* [Install build tools](#install-build-tools)
|
||||
* [Build](#build-1)
|
||||
* [Linux EGL](#linux-egl)
|
||||
* [Linux OSMesa](#linux-osmesa)
|
||||
* [Linux mingw-w64](#linux-mingw-w64)
|
||||
* [Using cmake](#using-cmake)
|
||||
* [Install build tools](#install-build-tools-1)
|
||||
@@ -95,11 +94,6 @@ _Note: you may need to call `make` in the **auto** folder first_
|
||||
$ sudo apt install libegl1-mesa-dev
|
||||
$ make SYSTEM=linux-egl
|
||||
|
||||
##### Linux OSMesa
|
||||
|
||||
$ sudo apt install libosmesa-dev
|
||||
$ make SYSTEM=linux-osmesa
|
||||
|
||||
##### Linux mingw-w64
|
||||
|
||||
$ sudo apt install mingw-w64
|
||||
@@ -140,7 +134,6 @@ RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel c
|
||||
| --------------- | ----------- |
|
||||
| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
|
||||
| GLEW_REGAL | Build in Regal mode. |
|
||||
| GLEW_OSMESA | Build in off-screen Mesa mode. |
|
||||
| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
|
||||
|
||||
### Windows
|
||||
|
||||
32
deps/GMP/0001-GMP_GCC15.patch
vendored
Normal file
32
deps/GMP/0001-GMP_GCC15.patch
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
--- GMP/acinclude.m4 2025-05-14 18:50:11.396354745 -0400
|
||||
+++ GMP/acinclude.m4.2 2025-05-14 18:57:20.757853503 -0400
|
||||
@@ -609,7 +609,7 @@
|
||||
|
||||
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||
typedef unsigned long long t1;typedef t1*t2;
|
||||
-void g(){}
|
||||
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||
void h(){}
|
||||
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||
|
||||
--- GMP/configure 2025-05-14 19:33:35.730593315 -0400
|
||||
+++ GMP/configure 2025-05-14 19:35:37.805619186 -0400
|
||||
@@ -6526,7 +6526,7 @@
|
||||
|
||||
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||
typedef unsigned long long t1;typedef t1*t2;
|
||||
-void g(){}
|
||||
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||
void h(){}
|
||||
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||
@@ -8145,7 +8145,7 @@
|
||||
|
||||
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||
typedef unsigned long long t1;typedef t1*t2;
|
||||
-void g(){}
|
||||
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||
void h(){}
|
||||
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||
26
deps/GMP/GMP.cmake
vendored
26
deps/GMP/GMP.cmake
vendored
@@ -1,19 +1,22 @@
|
||||
|
||||
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp)
|
||||
set(_dstdir ${DESTDIR}/usr/local)
|
||||
|
||||
if (IN_GIT_REPO)
|
||||
set(GMP_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_GMP-prefix/src/dep_GMP)
|
||||
endif ()
|
||||
|
||||
if (MSVC)
|
||||
set(_output ${_dstdir}/include/gmp.h
|
||||
${_dstdir}/lib/libgmp-10.lib
|
||||
${_dstdir}/bin/libgmp-10.dll)
|
||||
set(_output ${DESTDIR}/include/gmp.h
|
||||
${DESTDIR}/lib/libgmp-10.lib
|
||||
${DESTDIR}/bin/libgmp-10.dll)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${_output}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${_dstdir}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.lib ${_dstdir}/lib/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.dll ${_dstdir}/bin/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${DESTDIR}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.lib ${DESTDIR}/lib/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.dll ${DESTDIR}/bin/
|
||||
)
|
||||
|
||||
|
||||
add_custom_target(dep_GMP SOURCES ${_output})
|
||||
|
||||
else ()
|
||||
@@ -60,9 +63,10 @@ else ()
|
||||
URL https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
|
||||
URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}/usr/local" ${_gmp_build_tgt}
|
||||
PATCH_COMMAND git apply ${GMP_DIRECTORY_FLAG} --verbose ${CMAKE_CURRENT_LIST_DIR}/0001-GMP_GCC15.patch
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
|
||||
BUILD_COMMAND make -j
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
23
deps/MPFR/MPFR.cmake
vendored
23
deps/MPFR/MPFR.cmake
vendored
@@ -1,18 +1,17 @@
|
||||
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/mpfr)
|
||||
set(_dstdir ${DESTDIR}/usr/local)
|
||||
|
||||
if (MSVC)
|
||||
set(_output ${_dstdir}/include/mpfr.h
|
||||
${_dstdir}/include/mpf2mpfr.h
|
||||
${_dstdir}/lib/libmpfr-4.lib
|
||||
${_dstdir}/bin/libmpfr-4.dll)
|
||||
set(_output ${DESTDIR}/include/mpfr.h
|
||||
${DESTDIR}/include/mpf2mpfr.h
|
||||
${DESTDIR}/lib/libmpfr-4.lib
|
||||
${DESTDIR}/bin/libmpfr-4.dll)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${_output}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${_dstdir}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${_dstdir}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${_dstdir}/lib/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${_dstdir}/bin/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${DESTDIR}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${DESTDIR}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.lib ${DESTDIR}/lib/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.dll ${DESTDIR}/bin/
|
||||
)
|
||||
|
||||
add_custom_target(dep_MPFR SOURCES ${_output})
|
||||
@@ -26,12 +25,12 @@ else ()
|
||||
endif ()
|
||||
|
||||
ExternalProject_Add(dep_MPFR
|
||||
URL https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.bz2
|
||||
URL_HASH SHA256=b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0
|
||||
URL https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2.tar.bz2
|
||||
URL_HASH SHA256=9ad62c7dc910303cd384ff8f1f4767a655124980bb6d8650fe62c815a231bb7b
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND autoreconf -f -i &&
|
||||
env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt}
|
||||
env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR} --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR} ${_gmp_build_tgt}
|
||||
BUILD_COMMAND make -j
|
||||
INSTALL_COMMAND make install
|
||||
DEPENDS dep_GMP
|
||||
|
||||
24
deps/OCCT/0001-OCCT-fix.patch
vendored
24
deps/OCCT/0001-OCCT-fix.patch
vendored
@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
|
||||
|
||||
if (!myFTLib->IsValid())
|
||||
{
|
||||
From 7236e83dcc1e7284e66dc61e612154617ef715d6 Mon Sep 17 00:00:00 2001
|
||||
From: dpasukhi <dpasukhi@opencascade.com>
|
||||
Date: Tue, 27 Aug 2024 11:33:29 +0100
|
||||
Subject: [PATCH] 0033808: Coding - FreeType Use unsigned point and contour
|
||||
indexing in `FT_Outline`
|
||||
|
||||
Changes to auto instead of specific type
|
||||
---
|
||||
src/StdPrs/StdPrs_BRepFont.cxx | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||
index ab2d9b3c9f..cd701879b1 100644
|
||||
--- a/src/StdPrs/StdPrs_BRepFont.cxx
|
||||
+++ b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||
@@ -457,7 +457,7 @@ Standard_Boolean StdPrs_BRepFont::renderGlyph (const Standard_Utf32Char theChar,
|
||||
for (short aContour = 0, aStartIndex = 0; aContour < anOutline->n_contours; ++aContour)
|
||||
{
|
||||
const FT_Vector* aPntList = &anOutline->points[aStartIndex];
|
||||
- const char* aTags = &anOutline->tags[aStartIndex];
|
||||
+ const auto* aTags = &anOutline->tags[aStartIndex];
|
||||
const short anEndIndex = anOutline->contours[aContour];
|
||||
const short aPntsNb = (anEndIndex - aStartIndex) + 1;
|
||||
aStartIndex = anEndIndex + 1;
|
||||
|
||||
13
deps/OCCT/OCCT.cmake
vendored
13
deps/OCCT/OCCT.cmake
vendored
@@ -4,17 +4,17 @@ else()
|
||||
set(library_build_type "Static")
|
||||
endif()
|
||||
|
||||
|
||||
# get relative path of CMAKE_BINARY_DIR against root source directory
|
||||
file(RELATIVE_PATH BINARY_DIR_REL ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR})
|
||||
if (IN_GIT_REPO)
|
||||
set(OCCT_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(OCCT
|
||||
URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
||||
URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
||||
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||
PATCH_COMMAND git apply --directory ${BINARY_DIR_REL}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||
PATCH_COMMAND git apply ${OCCT_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch
|
||||
#DEPENDS dep_Boost
|
||||
#DEPENDS dep_FREETYPE
|
||||
DEPENDS ${FREETYPE_PKG}
|
||||
CMAKE_ARGS
|
||||
-DBUILD_LIBRARY_TYPE=${library_build_type}
|
||||
-DUSE_TK=OFF
|
||||
@@ -22,6 +22,7 @@ orcaslicer_add_cmake_project(OCCT
|
||||
#-DUSE_FREETYPE=OFF
|
||||
-DUSE_FFMPEG=OFF
|
||||
-DUSE_VTK=OFF
|
||||
-DBUILD_DOC_Overview=OFF
|
||||
-DBUILD_MODULE_ApplicationFramework=OFF
|
||||
#-DBUILD_MODULE_DataExchange=OFF
|
||||
-DBUILD_MODULE_Draw=OFF
|
||||
@@ -31,4 +32,4 @@ orcaslicer_add_cmake_project(OCCT
|
||||
-DBUILD_MODULE_Visualization=OFF
|
||||
)
|
||||
|
||||
add_dependencies(dep_OCCT dep_FREETYPE)
|
||||
# add_dependencies(dep_OCCT ${FREETYPE_PKG})
|
||||
|
||||
52
deps/OpenCV/0001-vs2022.patch
vendored
Normal file
52
deps/OpenCV/0001-vs2022.patch
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
From 6fb3f6333150a777e835fc7c48e49750591bf7fe Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Buch <bebuch@users.noreply.github.com>
|
||||
Date: Thu, 23 May 2024 16:05:19 +0200
|
||||
Subject: [PATCH] Support VS 2022 17.1x.y
|
||||
|
||||
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
|
||||
---
|
||||
cmake/templates/OpenCVConfig.root-WIN32.cmake.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||
index b0f254ebe8..62e36272f3 100644
|
||||
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||
@@ -137,7 +137,7 @@ elseif(MSVC)
|
||||
set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
|
||||
endif()
|
||||
endif()
|
||||
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
||||
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
||||
set(OpenCV_RUNTIME vc17)
|
||||
check_one_config(has_VS2022)
|
||||
if(NOT has_VS2022)
|
||||
--
|
||||
2.45.2.windows.1
|
||||
|
||||
From f85818ba6f9031c450475a7453dee0acce31a881 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Buch <bebuch@users.noreply.github.com>
|
||||
Date: Fri, 24 May 2024 11:10:09 +0200
|
||||
Subject: [PATCH] Support VS 2022 17.1x.y in OpenCVDetectCXXCompiler.cmake
|
||||
|
||||
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
|
||||
---
|
||||
cmake/OpenCVDetectCXXCompiler.cmake | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
|
||||
index 1743aca11f..448afd46ea 100644
|
||||
--- a/cmake/OpenCVDetectCXXCompiler.cmake
|
||||
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
|
||||
@@ -176,7 +176,7 @@ elseif(MSVC)
|
||||
set(OpenCV_RUNTIME vc15)
|
||||
elseif(MSVC_VERSION MATCHES "^192[0-9]$")
|
||||
set(OpenCV_RUNTIME vc16)
|
||||
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
||||
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
||||
set(OpenCV_RUNTIME vc17)
|
||||
else()
|
||||
message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
|
||||
--
|
||||
2.45.2.windows.1
|
||||
|
||||
54
deps/OpenCV/0002-clang19-macos.patch
vendored
Normal file
54
deps/OpenCV/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
From 893b8113f04d408cc6177c6de19c9889a48faa24 Mon Sep 17 00:00:00 2001
|
||||
From: Zixu Wang <zixu_wang@apple.com>
|
||||
Date: Thu, 18 Jan 2024 11:12:00 -0800
|
||||
Subject: [PATCH] Fix unused platform check and configuration for macOS
|
||||
|
||||
In a similar manner as zlib (https://github.com/madler/zlib/pull/895),
|
||||
libpng contains a header configuration that's no longer valid and
|
||||
hasn't been exercised for the macOS target.
|
||||
|
||||
- The target OS conditional macros are misused. Specifically
|
||||
`TARGET_OS_MAC` covers all Apple targets, including iOS, and it
|
||||
should not be checked with `#if defined` as they would always be
|
||||
defined (to either 1 or 0) on Apple platforms.
|
||||
- `#include <fp.h>` no longer works for the macOS target and results
|
||||
in a compilation failure. macOS ships all required functions in
|
||||
`math.h`, and clients should use `math.h` instead.
|
||||
|
||||
This problem has not been noticed until a recent extension in clang
|
||||
(https://github.com/llvm/llvm-project/pull/74676) exposed the issue
|
||||
and broke libpng builds on Apple platforms. The failure can be
|
||||
reproduced now by adding `#include <TargetConditionals.h>` before the
|
||||
block.
|
||||
|
||||
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
|
||||
---
|
||||
AUTHORS | 2 ++
|
||||
pngpriv.h | 14 ++------------
|
||||
2 files changed, 4 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/3rdparty/libpng/pngpriv.h b/3rdparty/libpng/pngpriv.h
|
||||
index 6c7280cf53..190eb85cbf 100644
|
||||
--- a/3rdparty/libpng/pngpriv.h
|
||||
+++ b/3rdparty/libpng/pngpriv.h
|
||||
@@ -556,18 +556,8 @@
|
||||
*/
|
||||
# include <float.h>
|
||||
|
||||
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||
- /* We need to check that <math.h> hasn't already been included earlier
|
||||
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||
- * <fp.h> if possible.
|
||||
- */
|
||||
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||
-# include <fp.h>
|
||||
-# endif
|
||||
-# else
|
||||
-# include <math.h>
|
||||
-# endif
|
||||
+# include <math.h>
|
||||
+
|
||||
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||
* MATH=68881
|
||||
77
deps/OpenCV/OpenCV.cmake
vendored
Normal file
77
deps/OpenCV/OpenCV.cmake
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
if (MSVC)
|
||||
set(_use_IPP "-DWITH_IPP=ON")
|
||||
else ()
|
||||
set(_use_IPP "-DWITH_IPP=OFF")
|
||||
endif ()
|
||||
|
||||
if (IN_GIT_REPO)
|
||||
set(OpenCV_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(OpenCV
|
||||
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
||||
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
||||
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||
CMAKE_ARGS
|
||||
-DBUILD_SHARED_LIBS=0
|
||||
-DBUILD_PERE_TESTS=OFF
|
||||
-DBUILD_TESTS=OFF
|
||||
-DBUILD_opencv_python_tests=OFF
|
||||
-DBUILD_EXAMPLES=OFF
|
||||
-DBUILD_JASPER=OFF
|
||||
-DBUILD_JAVA=OFF
|
||||
-DBUILD_JPEG=ON
|
||||
-DBUILD_APPS_LIST=version
|
||||
-DBUILD_opencv_apps=OFF
|
||||
-DBUILD_opencv_java=OFF
|
||||
-DBUILD_OPENEXR=OFF
|
||||
-DBUILD_PNG=ON
|
||||
-DBUILD_TBB=OFF
|
||||
-DBUILD_WEBP=OFF
|
||||
-DBUILD_ZLIB=OFF
|
||||
-DWITH_1394=OFF
|
||||
-DWITH_CUDA=OFF
|
||||
-DWITH_EIGEN=OFF
|
||||
${_use_IPP}
|
||||
-DWITH_ITT=OFF
|
||||
-DWITH_FFMPEG=OFF
|
||||
-DWITH_GPHOTO2=OFF
|
||||
-DWITH_GSTREAMER=OFF
|
||||
-DOPENCV_GAPI_GSTREAMER=OFF
|
||||
-DWITH_GTK_2_X=OFF
|
||||
-DWITH_JASPER=OFF
|
||||
-DWITH_LAPACK=OFF
|
||||
-DWITH_MATLAB=OFF
|
||||
-DWITH_MFX=OFF
|
||||
-DWITH_DIRECTX=OFF
|
||||
-DWITH_DIRECTML=OFF
|
||||
-DWITH_OPENCL=OFF
|
||||
-DWITH_OPENCL_D3D11_NV=OFF
|
||||
-DWITH_OPENCLAMDBLAS=OFF
|
||||
-DWITH_OPENCLAMDFFT=OFF
|
||||
-DWITH_OPENEXR=OFF
|
||||
-DWITH_OPENJPEG=OFF
|
||||
-DWITH_QUIRC=OFF
|
||||
-DWITH_VTK=OFF
|
||||
-DWITH_WEBP=OFF
|
||||
-DENABLE_PRECOMPILED_HEADERS=OFF
|
||||
-DINSTALL_TESTS=OFF
|
||||
-DINSTALL_C_EXAMPLES=OFF
|
||||
-DINSTALL_PYTHON_EXAMPLES=OFF
|
||||
-DOPENCV_GENERATE_SETUPVARS=OFF
|
||||
-DOPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT=OFF
|
||||
-DBUILD_opencv_python2=OFF
|
||||
-DBUILD_opencv_python3=OFF
|
||||
-DWITH_OPENVINO=OFF
|
||||
-DWITH_INF_ENGINE=OFF
|
||||
-DWITH_NGRAPH=OFF
|
||||
-DBUILD_WITH_STATIC_CRT=OFF#set /MDd /MD
|
||||
-DBUILD_LIST=core,imgcodecs,imgproc,world
|
||||
-DBUILD_opencv_highgui=OFF
|
||||
-DWITH_ADE=OFF
|
||||
-DBUILD_opencv_world=ON
|
||||
-DWITH_PROTOBUF=OFF
|
||||
-DWITH_WIN32UI=OFF
|
||||
-DHAVE_WIN32UI=FALSE
|
||||
)
|
||||
|
||||
6
deps/OpenEXR/OpenEXR.cmake
vendored
6
deps/OpenEXR/OpenEXR.cmake
vendored
@@ -15,11 +15,11 @@ if (APPLE AND IS_CROSS_COMPILE)
|
||||
EXCLUDE_FROM_ALL ON
|
||||
URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
|
||||
URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
|
||||
INSTALL_DIR ${DESTDIR}/usr/local
|
||||
INSTALL_DIR ${DESTDIR}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenEXR
|
||||
${_openxr_list_sep}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
|
||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
@@ -54,4 +54,4 @@ endif()
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_OpenEXR)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
6
deps/OpenSSL/OpenSSL.cmake
vendored
6
deps/OpenSSL/OpenSSL.cmake
vendored
@@ -46,8 +46,8 @@ ExternalProject_Add(dep_OpenSSL
|
||||
# URL_HASH SHA256=8c776993154652d0bb393f506d850b811517c8bd8d24b1008aef57fbe55d3f31
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenSSL
|
||||
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
|
||||
"--openssldir=${DESTDIR}/usr/local"
|
||||
"--prefix=${DESTDIR}/usr/local"
|
||||
"--openssldir=${DESTDIR}"
|
||||
"--prefix=${DESTDIR}"
|
||||
${_cross_comp_prefix_line}
|
||||
no-shared
|
||||
no-asm
|
||||
@@ -61,6 +61,6 @@ ExternalProject_Add(dep_OpenSSL
|
||||
ExternalProject_Add_Step(dep_OpenSSL install_cmake_files
|
||||
DEPENDEES install
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory openssl "${DESTDIR}/usr/local/${CMAKE_INSTALL_LIBDIR}/cmake/openssl"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory openssl "${DESTDIR}${CMAKE_INSTALL_LIBDIR}/cmake/openssl"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}"
|
||||
)
|
||||
|
||||
29
deps/OpenVDB/0001-clang19.patch
vendored
Normal file
29
deps/OpenVDB/0001-clang19.patch
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
--- a/openvdb/openvdb/tree/NodeManager.h 2023-11-01 20:31:11 UTC
|
||||
+++ b/openvdb/openvdb/tree/NodeManager.h
|
||||
@@ -327,7 +327,7 @@ class NodeList (private)
|
||||
void operator()(const NodeRange& range) const
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(mNodeOp, it);
|
||||
+ OpT::eval(mNodeOp, it);
|
||||
}
|
||||
}
|
||||
const NodeOp mNodeOp;
|
||||
@@ -347,7 +347,7 @@ class NodeList (private)
|
||||
void operator()(const NodeRange& range) const
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(mNodeOp, it);
|
||||
+ OpT::eval(mNodeOp, it);
|
||||
}
|
||||
}
|
||||
const NodeOp& mNodeOp;
|
||||
@@ -372,7 +372,7 @@ class NodeList (private)
|
||||
void operator()(const NodeRange& range)
|
||||
{
|
||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||
- OpT::template eval(*mNodeOp, it);
|
||||
+ OpT::eval(*mNodeOp, it);
|
||||
}
|
||||
}
|
||||
void join(const NodeReducer& other)
|
||||
5
deps/OpenVDB/OpenVDB.cmake
vendored
5
deps/OpenVDB/OpenVDB.cmake
vendored
@@ -6,10 +6,15 @@ else()
|
||||
set(_build_static ON)
|
||||
endif()
|
||||
|
||||
if (IN_GIT_REPO)
|
||||
set(OPENVDB_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenVDB-prefix/src/dep_OpenVDB)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(OpenVDB
|
||||
# support vs2022, update to 8.2
|
||||
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
|
||||
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
||||
PATCH_COMMAND git apply ${OPENVDB_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
|
||||
DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
|
||||
29
deps/PNG/0002-clang19-macos.patch
vendored
Normal file
29
deps/PNG/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
--- a/pngpriv.h 2025-04-20 19:36:04.000000000
|
||||
+++ b/pngpriv.h 2025-04-20 19:35:55.000000000
|
||||
@@ -511,24 +511,14 @@
|
||||
* DBL_DIG Maximum number of decimal digits (can be set to any constant)
|
||||
* DBL_MIN Smallest normalized fp number (can be set to an arbitrary value)
|
||||
* DBL_MAX Maximum floating point number (can be set to an arbitrary value)
|
||||
*/
|
||||
# include <float.h>
|
||||
|
||||
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||
- /* We need to check that <math.h> hasn't already been included earlier
|
||||
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||
- * <fp.h> if possible.
|
||||
- */
|
||||
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||
-# include <fp.h>
|
||||
-# endif
|
||||
-# else
|
||||
-# include <math.h>
|
||||
-# endif
|
||||
+# include <math.h>
|
||||
+
|
||||
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||
* MATH=68881
|
||||
*/
|
||||
# include <m68881.h>
|
||||
# endif
|
||||
4
deps/PNG/PNG.cmake
vendored
4
deps/PNG/PNG.cmake
vendored
@@ -12,7 +12,7 @@ if(APPLE AND IS_CROSS_COMPILE)
|
||||
GIT_TAG v1.6.35
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
|
||||
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch
|
||||
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||
CMAKE_ARGS
|
||||
-DPNG_SHARED=OFF
|
||||
-DPNG_STATIC=ON
|
||||
@@ -24,7 +24,7 @@ if(APPLE AND IS_CROSS_COMPILE)
|
||||
else ()
|
||||
set(_patch_step "")
|
||||
if (APPLE)
|
||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
|
||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch)
|
||||
endif ()
|
||||
orcaslicer_add_cmake_project(PNG
|
||||
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||
|
||||
79
deps/TBB/GNU.cmake
vendored
Normal file
79
deps/TBB/GNU.cmake
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# Copyright (c) 2020-2021 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
if (MINGW)
|
||||
set(TBB_LINK_DEF_FILE_FLAG "")
|
||||
set(TBB_DEF_FILE_PREFIX "")
|
||||
elseif (APPLE)
|
||||
set(TBB_LINK_DEF_FILE_FLAG -Wl,-exported_symbols_list,)
|
||||
set(TBB_DEF_FILE_PREFIX mac${TBB_ARCH})
|
||||
|
||||
# For correct ucontext.h structures layout
|
||||
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -D_XOPEN_SOURCE)
|
||||
else()
|
||||
set(TBB_LINK_DEF_FILE_FLAG -Wl,--version-script=)
|
||||
set(TBB_DEF_FILE_PREFIX lin${TBB_ARCH})
|
||||
endif()
|
||||
|
||||
# Add -Wno-error=stringop-overflow to fix GCC 12+ build as suggested on https://github.com/oneapi-src/oneTBB/issues/843#issuecomment-1152646035
|
||||
set(TBB_WARNING_LEVEL -Wall -Wextra $<$<BOOL:${TBB_STRICT}>:-Werror> -Wfatal-errors -Wno-error=stringop-overflow)
|
||||
set(TBB_TEST_WARNING_FLAGS -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor)
|
||||
|
||||
# Depfile options (e.g. -MD) are inserted automatically in some cases.
|
||||
# Don't add -MMD to avoid conflicts in such cases.
|
||||
if (NOT CMAKE_GENERATOR MATCHES "Ninja" AND NOT CMAKE_CXX_DEPENDS_USE_COMPILER)
|
||||
set(TBB_MMD_FLAG -MMD)
|
||||
endif()
|
||||
|
||||
# Enable Intel(R) Transactional Synchronization Extensions (-mrtm) and WAITPKG instructions support (-mwaitpkg) on relevant processors
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
|
||||
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm $<$<AND:$<NOT:$<CXX_COMPILER_ID:Intel>>,$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},11.0>>>:-mwaitpkg>)
|
||||
endif()
|
||||
|
||||
if (NOT MINGW)
|
||||
set(TBB_COMMON_LINK_LIBS dl)
|
||||
endif()
|
||||
|
||||
# Ignore -Werror set through add_compile_options() or added to CMAKE_CXX_FLAGS if TBB_STRICT is disabled.
|
||||
if (NOT TBB_STRICT AND COMMAND tbb_remove_compile_flag)
|
||||
tbb_remove_compile_flag(-Werror)
|
||||
endif()
|
||||
|
||||
if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL Intel)
|
||||
# gcc 6.0 and later have -flifetime-dse option that controls elimination of stores done outside the object lifetime
|
||||
set(TBB_DSE_FLAG $<$<NOT:$<VERSION_LESS:${CMAKE_CXX_COMPILER_VERSION},6.0>>:-flifetime-dse=1>)
|
||||
endif()
|
||||
|
||||
# Workaround for heavy tests and too many symbols in debug (rellocation truncated to fit: R_MIPS_CALL16)
|
||||
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "mips")
|
||||
set(TBB_TEST_COMPILE_FLAGS ${TBB_TEST_COMPILE_FLAGS} -DTBB_TEST_LOW_WORKLOAD $<$<CONFIG:DEBUG>:-mxgot>)
|
||||
endif()
|
||||
|
||||
if (MINGW)
|
||||
list(APPEND TBB_COMMON_COMPILE_FLAGS -U__STRICT_ANSI__)
|
||||
endif()
|
||||
|
||||
# For some reason GCC does not instrument code with Thread Sanitizer when lto is enabled and C linker is used.
|
||||
if (NOT TBB_SANITIZE MATCHES "thread")
|
||||
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
|
||||
set(TBB_IPO_LINK_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
|
||||
endif()
|
||||
|
||||
# Disable lto flag
|
||||
set(TBB_IPO_COMPILE_FLAGS "")
|
||||
set(TBB_IPO_LINK_FLAGS "")
|
||||
|
||||
# TBB malloc settings
|
||||
set(TBBMALLOC_LIB_COMPILE_FLAGS -fno-rtti -fno-exceptions)
|
||||
set(TBB_OPENMP_FLAG -fopenmp)
|
||||
8
deps/TBB/TBB.cmake
vendored
8
deps/TBB/TBB.cmake
vendored
@@ -1,8 +1,14 @@
|
||||
if (FLATPAK)
|
||||
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
|
||||
else()
|
||||
set(_patch_command "")
|
||||
endif()
|
||||
|
||||
orcaslicer_add_cmake_project(
|
||||
TBB
|
||||
URL "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip"
|
||||
URL_HASH SHA256=83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47
|
||||
#PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-TBB-GCC13.patch
|
||||
PATCH_COMMAND ${_patch_command}
|
||||
CMAKE_ARGS
|
||||
-DTBB_BUILD_SHARED=OFF
|
||||
-DTBB_BUILD_TESTS=OFF
|
||||
|
||||
33
deps/TIFF/TIFF.cmake
vendored
33
deps/TIFF/TIFF.cmake
vendored
@@ -1,33 +0,0 @@
|
||||
find_package(OpenGL QUIET REQUIRED)
|
||||
|
||||
if (APPLE)
|
||||
message(STATUS "Compiling TIFF for macos ${CMAKE_SYSTEM_VERSION}.")
|
||||
orcaslicer_add_cmake_project(TIFF
|
||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.3.0/libtiff-v4.3.0.zip
|
||||
URL_HASH SHA256=4fca1b582c88319f3ad6ecd5b46320eadaf5eb4ef6f6c32d44caaae4a03d0726
|
||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
|
||||
CMAKE_ARGS
|
||||
-Dlzma:BOOL=OFF
|
||||
-Dwebp:BOOL=OFF
|
||||
-Djbig:BOOL=OFF
|
||||
-Dzstd:BOOL=OFF
|
||||
-Dlibdeflate:BOOL=OFF
|
||||
-Dpixarlog:BOOL=OFF
|
||||
)
|
||||
else()
|
||||
orcaslicer_add_cmake_project(TIFF
|
||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
|
||||
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
|
||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
|
||||
CMAKE_ARGS
|
||||
-Dlzma:BOOL=OFF
|
||||
-Dwebp:BOOL=OFF
|
||||
-Djbig:BOOL=OFF
|
||||
-Dzstd:BOOL=OFF
|
||||
-Dpixarlog:BOOL=OFF
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
44755
deps/WebView2/include/WebView2.h
vendored
44755
deps/WebView2/include/WebView2.h
vendored
File diff suppressed because it is too large
Load Diff
414
deps/WebView2/include/WebView2EnvironmentOptions.h
vendored
414
deps/WebView2/include/WebView2EnvironmentOptions.h
vendored
@@ -5,11 +5,27 @@
|
||||
#ifndef __core_webview2_environment_options_h__
|
||||
#define __core_webview2_environment_options_h__
|
||||
|
||||
// Adding the definition of this macro to enable unsafe buffer usage
|
||||
#ifndef UNSAFE_BUFFERS
|
||||
#if defined(__clang__)
|
||||
|
||||
// clang-format off
|
||||
#define UNSAFE_BUFFERS(...) \
|
||||
_Pragma("clang unsafe_buffer_usage begin") \
|
||||
__VA_ARGS__ \
|
||||
_Pragma("clang unsafe_buffer_usage end")
|
||||
// clang-format on
|
||||
|
||||
#else
|
||||
#define UNSAFE_BUFFERS(...) __VA_ARGS__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <objbase.h>
|
||||
#include <wrl/implements.h>
|
||||
|
||||
#include "webview2.h"
|
||||
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"107.0.1418.22"
|
||||
#include "WebView2.h"
|
||||
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"138.0.3351.48"
|
||||
|
||||
#define COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(p) \
|
||||
public: \
|
||||
@@ -31,21 +47,180 @@
|
||||
protected: \
|
||||
AutoCoMemString m_##p;
|
||||
|
||||
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p) \
|
||||
public: \
|
||||
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
|
||||
if (!value) \
|
||||
return E_POINTER; \
|
||||
*value = m_##p; \
|
||||
return S_OK; \
|
||||
} \
|
||||
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
|
||||
m_##p = value; \
|
||||
return S_OK; \
|
||||
} \
|
||||
\
|
||||
protected: \
|
||||
BOOL m_##p = FALSE;
|
||||
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p, defPVal) \
|
||||
public: \
|
||||
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
|
||||
if (!value) \
|
||||
return E_POINTER; \
|
||||
*value = m_##p; \
|
||||
return S_OK; \
|
||||
} \
|
||||
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
|
||||
m_##p = value; \
|
||||
return S_OK; \
|
||||
} \
|
||||
\
|
||||
protected: \
|
||||
BOOL m_##p = defPVal ? TRUE : FALSE;
|
||||
|
||||
#define DEFINE_AUTO_COMEM_STRING() \
|
||||
protected: \
|
||||
class AutoCoMemString { \
|
||||
public: \
|
||||
AutoCoMemString() {} \
|
||||
~AutoCoMemString() { Release(); } \
|
||||
void Release() { \
|
||||
if (m_string) { \
|
||||
deallocate_fn(m_string); \
|
||||
m_string = nullptr; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
LPCWSTR Set(LPCWSTR str) { \
|
||||
Release(); \
|
||||
if (str) { \
|
||||
m_string = MakeCoMemString(str); \
|
||||
} \
|
||||
return m_string; \
|
||||
} \
|
||||
LPCWSTR Get() { return m_string; } \
|
||||
LPWSTR Copy() { \
|
||||
if (m_string) \
|
||||
return MakeCoMemString(m_string); \
|
||||
return nullptr; \
|
||||
} \
|
||||
\
|
||||
protected: \
|
||||
LPWSTR MakeCoMemString(LPCWSTR source) { \
|
||||
const size_t length = wcslen(source); \
|
||||
const size_t bytes = (length + 1) * sizeof(*source); \
|
||||
\
|
||||
if (bytes <= length) { \
|
||||
return nullptr; \
|
||||
} \
|
||||
\
|
||||
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes)); \
|
||||
\
|
||||
if (result) \
|
||||
memcpy(result, source, bytes); \
|
||||
return result; \
|
||||
} \
|
||||
LPWSTR m_string = nullptr; \
|
||||
};
|
||||
|
||||
template <typename allocate_fn_t,
|
||||
allocate_fn_t allocate_fn,
|
||||
typename deallocate_fn_t,
|
||||
deallocate_fn_t deallocate_fn>
|
||||
class CoreWebView2CustomSchemeRegistrationBase
|
||||
: public Microsoft::WRL::RuntimeClass<
|
||||
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
|
||||
ICoreWebView2CustomSchemeRegistration> {
|
||||
public:
|
||||
CoreWebView2CustomSchemeRegistrationBase(LPCWSTR schemeName) {
|
||||
m_schemeName.Set(schemeName);
|
||||
}
|
||||
|
||||
CoreWebView2CustomSchemeRegistrationBase(
|
||||
CoreWebView2CustomSchemeRegistrationBase&&) = default;
|
||||
~CoreWebView2CustomSchemeRegistrationBase() { ReleaseAllowedOrigins(); }
|
||||
|
||||
HRESULT STDMETHODCALLTYPE get_SchemeName(LPWSTR* schemeName) override {
|
||||
if (!schemeName)
|
||||
return E_POINTER;
|
||||
*schemeName = m_schemeName.Copy();
|
||||
if ((*schemeName == nullptr) && (m_schemeName.Get() != nullptr))
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
GetAllowedOrigins(UINT32* allowedOriginsCount,
|
||||
LPWSTR** allowedOrigins) override {
|
||||
if (!allowedOrigins || !allowedOriginsCount) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*allowedOriginsCount = 0;
|
||||
if (m_allowedOriginsCount == 0) {
|
||||
*allowedOrigins = nullptr;
|
||||
return S_OK;
|
||||
} else {
|
||||
*allowedOrigins = reinterpret_cast<LPWSTR*>(
|
||||
allocate_fn(m_allowedOriginsCount * sizeof(LPWSTR)));
|
||||
if (!(*allowedOrigins)) {
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
}
|
||||
ZeroMemory(*allowedOrigins, m_allowedOriginsCount * sizeof(LPWSTR));
|
||||
for (UINT32 i = 0; i < m_allowedOriginsCount; i++) {
|
||||
UNSAFE_BUFFERS((*allowedOrigins)[i] = m_allowedOrigins[i].Copy();
|
||||
if (!(*allowedOrigins)[i]) {
|
||||
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
|
||||
for (UINT32 j = 0; j < i; j++) {
|
||||
deallocate_fn((*allowedOrigins)[j]);
|
||||
}
|
||||
deallocate_fn(*allowedOrigins);
|
||||
return hr;
|
||||
})
|
||||
}
|
||||
*allowedOriginsCount = m_allowedOriginsCount;
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
SetAllowedOrigins(UINT32 allowedOriginsCount,
|
||||
LPCWSTR* allowedOrigins) override {
|
||||
ReleaseAllowedOrigins();
|
||||
if (allowedOriginsCount == 0) {
|
||||
return S_OK;
|
||||
} else {
|
||||
m_allowedOrigins = new AutoCoMemString[allowedOriginsCount];
|
||||
if (!m_allowedOrigins) {
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
}
|
||||
for (UINT32 i = 0; i < allowedOriginsCount; i++) {
|
||||
UNSAFE_BUFFERS(m_allowedOrigins[i].Set(allowedOrigins[i]);
|
||||
if (!m_allowedOrigins[i].Get()) {
|
||||
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
|
||||
for (UINT32 j = 0; j < i; j++) {
|
||||
m_allowedOrigins[j].Release();
|
||||
}
|
||||
m_allowedOriginsCount = 0;
|
||||
delete[] (m_allowedOrigins);
|
||||
return hr;
|
||||
})
|
||||
}
|
||||
m_allowedOriginsCount = allowedOriginsCount;
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
DEFINE_AUTO_COMEM_STRING()
|
||||
|
||||
void ReleaseAllowedOrigins() {
|
||||
if (m_allowedOrigins) {
|
||||
delete[] (m_allowedOrigins);
|
||||
m_allowedOrigins = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
AutoCoMemString m_schemeName;
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(TreatAsSecure, false)
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(HasAuthorityComponent, false)
|
||||
|
||||
// WebView2EnvironmentOptions.h this is a publicly exposed header to clients
|
||||
// and it used by them to integrate the webview2 enviorment as published at
|
||||
// https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2environmentoptions?view=webview2-1.0.3179.45
|
||||
// This file is not included in msedge.dll/lib/exe and is limited to WebView2
|
||||
// SDK which does not use partition alloc. So need to use raw_ptr_exclusion
|
||||
// here.
|
||||
#if defined(__has_attribute)
|
||||
__attribute__((annotate("raw_ptr_exclusion")))
|
||||
#endif
|
||||
AutoCoMemString* m_allowedOrigins = nullptr;
|
||||
unsigned int m_allowedOriginsCount = 0;
|
||||
};
|
||||
|
||||
// This is a base COM class that implements ICoreWebView2EnvironmentOptions.
|
||||
template <typename allocate_fn_t,
|
||||
@@ -56,70 +231,183 @@ class CoreWebView2EnvironmentOptionsBase
|
||||
: public Microsoft::WRL::Implements<
|
||||
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
|
||||
ICoreWebView2EnvironmentOptions,
|
||||
ICoreWebView2EnvironmentOptions2> {
|
||||
ICoreWebView2EnvironmentOptions2,
|
||||
ICoreWebView2EnvironmentOptions3,
|
||||
ICoreWebView2EnvironmentOptions4,
|
||||
ICoreWebView2EnvironmentOptions5,
|
||||
ICoreWebView2EnvironmentOptions6,
|
||||
ICoreWebView2EnvironmentOptions7,
|
||||
ICoreWebView2EnvironmentOptions8> {
|
||||
public:
|
||||
static const COREWEBVIEW2_RELEASE_CHANNELS kInternalChannel =
|
||||
static_cast<COREWEBVIEW2_RELEASE_CHANNELS>(1 << 4);
|
||||
static const COREWEBVIEW2_RELEASE_CHANNELS kAllChannels =
|
||||
COREWEBVIEW2_RELEASE_CHANNELS_STABLE |
|
||||
COREWEBVIEW2_RELEASE_CHANNELS_BETA | COREWEBVIEW2_RELEASE_CHANNELS_DEV |
|
||||
COREWEBVIEW2_RELEASE_CHANNELS_CANARY | kInternalChannel;
|
||||
|
||||
CoreWebView2EnvironmentOptionsBase() {
|
||||
// Initialize the target compatible browser version value to the version of
|
||||
// the browser binaries corresponding to this version of the SDK.
|
||||
// Initialize the target compatible browser version value to the version
|
||||
// of the browser binaries corresponding to this version of the SDK.
|
||||
m_TargetCompatibleBrowserVersion.Set(CORE_WEBVIEW_TARGET_PRODUCT_VERSION);
|
||||
}
|
||||
|
||||
// ICoreWebView2EnvironmentOptions7
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
get_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS* channels) override {
|
||||
if (!channels) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*channels = m_releaseChannels;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
put_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS channels) override {
|
||||
m_releaseChannels = channels;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
get_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND* value) override {
|
||||
if (!value) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*value = m_channelSearchKind;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
put_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND value) override {
|
||||
m_channelSearchKind = value;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// ICoreWebView2EnvironmentOptions8
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
get_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE* style) override {
|
||||
if (!style) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*style = m_scrollbarStyle;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE
|
||||
put_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE style) override {
|
||||
m_scrollbarStyle = style;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
~CoreWebView2EnvironmentOptionsBase() {}
|
||||
~CoreWebView2EnvironmentOptionsBase() { ReleaseCustomSchemeRegistrations(); }
|
||||
|
||||
class AutoCoMemString {
|
||||
public:
|
||||
AutoCoMemString() {}
|
||||
~AutoCoMemString() { Release(); }
|
||||
void Release() {
|
||||
if (m_string) {
|
||||
deallocate_fn(m_string);
|
||||
m_string = nullptr;
|
||||
void ReleaseCustomSchemeRegistrations() {
|
||||
if (m_customSchemeRegistrations) {
|
||||
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
|
||||
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||
// bound check and use the macro to mitigate the error.
|
||||
UNSAFE_BUFFERS(m_customSchemeRegistrations[i])->Release();
|
||||
}
|
||||
deallocate_fn(m_customSchemeRegistrations);
|
||||
m_customSchemeRegistrations = nullptr;
|
||||
m_customSchemeRegistrationsCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
LPCWSTR Set(LPCWSTR str) {
|
||||
Release();
|
||||
if (str) {
|
||||
m_string = MakeCoMemString(str);
|
||||
}
|
||||
return m_string;
|
||||
}
|
||||
LPCWSTR Get() { return m_string; }
|
||||
LPWSTR Copy() {
|
||||
if (m_string)
|
||||
return MakeCoMemString(m_string);
|
||||
return nullptr;
|
||||
}
|
||||
private:
|
||||
// TODO(task.ms/56073082): Use raw_ptr.
|
||||
#if defined(__has_attribute)
|
||||
__attribute__((annotate("raw_ptr_exclusion")))
|
||||
#endif
|
||||
ICoreWebView2CustomSchemeRegistration** m_customSchemeRegistrations = nullptr;
|
||||
unsigned int m_customSchemeRegistrationsCount = 0;
|
||||
|
||||
protected:
|
||||
LPWSTR MakeCoMemString(LPCWSTR source) {
|
||||
const size_t length = wcslen(source);
|
||||
const size_t bytes = (length + 1) * sizeof(*source);
|
||||
// Ensure we didn't overflow during our size calculation.
|
||||
if (bytes <= length) {
|
||||
return nullptr;
|
||||
}
|
||||
COREWEBVIEW2_RELEASE_CHANNELS m_releaseChannels = kAllChannels;
|
||||
COREWEBVIEW2_CHANNEL_SEARCH_KIND m_channelSearchKind =
|
||||
COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE;
|
||||
|
||||
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes));
|
||||
if (result)
|
||||
memcpy(result, source, bytes);
|
||||
// ICoreWebView2EnvironmentOptions8
|
||||
COREWEBVIEW2_SCROLLBAR_STYLE m_scrollbarStyle =
|
||||
COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
LPWSTR m_string = nullptr;
|
||||
};
|
||||
DEFINE_AUTO_COMEM_STRING()
|
||||
|
||||
public:
|
||||
// ICoreWebView2EnvironmentOptions
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(AdditionalBrowserArguments)
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(Language)
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(TargetCompatibleBrowserVersion)
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(
|
||||
AllowSingleSignOnUsingOSPrimaryAccount)
|
||||
AllowSingleSignOnUsingOSPrimaryAccount,
|
||||
false)
|
||||
|
||||
// ICoreWebView2EnvironmentOptions2
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess)
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess,
|
||||
false)
|
||||
|
||||
// ICoreWebView2EnvironmentOptions3
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(IsCustomCrashReportingEnabled,
|
||||
false)
|
||||
|
||||
// ICoreWebView2EnvironmentOptions4
|
||||
public:
|
||||
HRESULT STDMETHODCALLTYPE GetCustomSchemeRegistrations(
|
||||
UINT32* count,
|
||||
ICoreWebView2CustomSchemeRegistration*** schemeRegistrations) override {
|
||||
if (!count || !schemeRegistrations) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*count = 0;
|
||||
if (m_customSchemeRegistrationsCount == 0) {
|
||||
*schemeRegistrations = nullptr;
|
||||
return S_OK;
|
||||
} else {
|
||||
*schemeRegistrations =
|
||||
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(
|
||||
allocate_fn(sizeof(ICoreWebView2CustomSchemeRegistration*) *
|
||||
m_customSchemeRegistrationsCount));
|
||||
if (!*schemeRegistrations) {
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
}
|
||||
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
|
||||
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||
// bound check and use the macro to mitigate the error.
|
||||
UNSAFE_BUFFERS((*schemeRegistrations)[i] =
|
||||
m_customSchemeRegistrations[i];
|
||||
(*schemeRegistrations)[i]->AddRef();)
|
||||
}
|
||||
*count = m_customSchemeRegistrationsCount;
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE SetCustomSchemeRegistrations(
|
||||
UINT32 count,
|
||||
ICoreWebView2CustomSchemeRegistration** schemeRegistrations) override {
|
||||
ReleaseCustomSchemeRegistrations();
|
||||
m_customSchemeRegistrations =
|
||||
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(allocate_fn(
|
||||
sizeof(ICoreWebView2CustomSchemeRegistration*) * count));
|
||||
if (!m_customSchemeRegistrations) {
|
||||
return GetLastError();
|
||||
}
|
||||
for (UINT32 i = 0; i < count; i++) {
|
||||
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||
// bound check and use the macro to mitigate the error.
|
||||
UNSAFE_BUFFERS(m_customSchemeRegistrations[i] = schemeRegistrations[i];
|
||||
m_customSchemeRegistrations[i]->AddRef());
|
||||
}
|
||||
m_customSchemeRegistrationsCount = count;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// ICoreWebView2EnvironmentOptions5
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(EnableTrackingPrevention, true)
|
||||
|
||||
// ICoreWebView2EnvironmentOptions6
|
||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(AreBrowserExtensionsEnabled,
|
||||
false)
|
||||
};
|
||||
|
||||
template <typename allocate_fn_t,
|
||||
@@ -140,6 +428,12 @@ class CoreWebView2EnvironmentOptionsBaseClass
|
||||
~CoreWebView2EnvironmentOptionsBaseClass() override {}
|
||||
};
|
||||
|
||||
typedef CoreWebView2CustomSchemeRegistrationBase<decltype(&::CoTaskMemAlloc),
|
||||
::CoTaskMemAlloc,
|
||||
decltype(&::CoTaskMemFree),
|
||||
::CoTaskMemFree>
|
||||
CoreWebView2CustomSchemeRegistration;
|
||||
|
||||
typedef CoreWebView2EnvironmentOptionsBaseClass<decltype(&::CoTaskMemAlloc),
|
||||
::CoTaskMemAlloc,
|
||||
decltype(&::CoTaskMemFree),
|
||||
|
||||
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-arm64/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2Loader.dll
vendored
BIN
deps/WebView2/lib/win32/WebView2Loader.dll
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2Loader.dll.lib
vendored
BIN
deps/WebView2/lib/win32/WebView2Loader.dll.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2LoaderStatic.lib
vendored
BIN
deps/WebView2/lib/win32/WebView2LoaderStatic.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2Loader.dll
vendored
BIN
deps/WebView2/lib/win64/WebView2Loader.dll
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2Loader.dll.lib
vendored
BIN
deps/WebView2/lib/win64/WebView2Loader.dll.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2LoaderStatic.lib
vendored
BIN
deps/WebView2/lib/win64/WebView2LoaderStatic.lib
vendored
Binary file not shown.
23
deps/deps-windows.cmake
vendored
23
deps/deps-windows.cmake
vendored
@@ -15,8 +15,8 @@ elseif (MSVC_VERSION LESS 1930)
|
||||
# 1920-1929 = VS 16.0 (v142 toolset)
|
||||
set(DEP_VS_VER "16")
|
||||
set(DEP_BOOST_TOOLSET "msvc-14.2")
|
||||
elseif (MSVC_VERSION LESS 1940)
|
||||
# 1930-1939 = VS 17.0 (v143 toolset)
|
||||
elseif (MSVC_VERSION LESS 1950)
|
||||
# 1930-1949 = VS 17.0 (v143 toolset)
|
||||
set(DEP_VS_VER "17")
|
||||
set(DEP_BOOST_TOOLSET "msvc-14.3")
|
||||
else ()
|
||||
@@ -27,16 +27,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||
set(DEP_BOOST_TOOLSET "clang-win")
|
||||
endif ()
|
||||
|
||||
if (${DEPS_BITS} EQUAL 32)
|
||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
||||
if ("${DEPS_ARCH}" STREQUAL "x86")
|
||||
set(DEP_PLATFORM "Win32")
|
||||
else ()
|
||||
if (DEP_VS_VER LESS 16)
|
||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER} Win64")
|
||||
else ()
|
||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
||||
endif ()
|
||||
elseif ("${DEPS_ARCH}" STREQUAL "x64")
|
||||
set(DEP_PLATFORM "x64")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unsupported OS architecture")
|
||||
endif ()
|
||||
|
||||
if (${DEP_DEBUG})
|
||||
@@ -57,12 +54,14 @@ if (${DEP_DEBUG})
|
||||
endif ()
|
||||
endmacro()
|
||||
|
||||
if (${DEPS_BITS} EQUAL 32)
|
||||
if ("${DEPS_ARCH}" STREQUAL "x86")
|
||||
set(DEP_WXWIDGETS_TARGET "")
|
||||
set(DEP_WXWIDGETS_LIBDIR "vc_lib")
|
||||
else ()
|
||||
elseif ("${DEPS_ARCH}" STREQUAL "x64")
|
||||
set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64")
|
||||
set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
|
||||
else ()
|
||||
message(FATAL_ERROR "Unsupported OS architecture")
|
||||
endif ()
|
||||
|
||||
find_package(Git REQUIRED)
|
||||
|
||||
4
deps/libnoise/libnoise.cmake
vendored
Normal file
4
deps/libnoise/libnoise.cmake
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
orcaslicer_add_cmake_project(libnoise
|
||||
URL https://github.com/SoftFever/Orca-deps-libnoise/archive/refs/tags/1.0.zip
|
||||
URL_HASH SHA256=96ffd6cc47898dd8147aab53d7d1b1911b507d9dbaecd5613ca2649468afd8b6
|
||||
)
|
||||
@@ -1,683 +0,0 @@
|
||||
From f4fef135f0a58ca2916c45cd539923ab096935b6 Mon Sep 17 00:00:00 2001
|
||||
From: Ocraftyone <Ocraftyone@users.noreply.github.com>
|
||||
Date: Thu, 30 Nov 2023 03:25:54 -0500
|
||||
Subject: [PATCH] patch v3.2.1 for OrcaSlicer
|
||||
|
||||
---
|
||||
build/cmake/lib/webview/CMakeLists.txt | 4 +-
|
||||
include/wx/fontutil.h | 15 +++++++-
|
||||
include/wx/gdicmn.h | 3 ++
|
||||
include/wx/generic/grid.h | 4 +-
|
||||
include/wx/msw/font.h | 2 +-
|
||||
include/wx/msw/tooltip.h | 4 +-
|
||||
include/wx/osx/app.h | 2 +-
|
||||
src/common/combocmn.cpp | 11 +++++-
|
||||
src/common/datavcmn.cpp | 6 ++-
|
||||
src/common/dcbufcmn.cpp | 6 +++
|
||||
src/common/gdicmn.cpp | 14 +++++++
|
||||
src/common/image.cpp | 6 +--
|
||||
src/generic/grid.cpp | 50 ++++++++++++++++++++-----
|
||||
src/msw/bmpcbox.cpp | 9 ++++-
|
||||
src/msw/font.cpp | 14 +++----
|
||||
src/msw/menuitem.cpp | 2 +
|
||||
src/msw/window.cpp | 52 +++++++++++++++++---------
|
||||
src/osx/cocoa/dataview.mm | 26 +++++++++++--
|
||||
src/osx/cocoa/settings.mm | 6 +--
|
||||
src/osx/cocoa/window.mm | 4 ++
|
||||
20 files changed, 184 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt
|
||||
index 085381d785..62146abc04 100644
|
||||
--- a/build/cmake/lib/webview/CMakeLists.txt
|
||||
+++ b/build/cmake/lib/webview/CMakeLists.txt
|
||||
@@ -46,9 +46,9 @@ if(APPLE)
|
||||
elseif(WXMSW)
|
||||
if(wxUSE_WEBVIEW_EDGE)
|
||||
# Update the following variables if updating WebView2 SDK
|
||||
- set(WEBVIEW2_VERSION "1.0.705.50")
|
||||
+ set(WEBVIEW2_VERSION "1.0.1418.22")
|
||||
set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}")
|
||||
- set(WEBVIEW2_SHA256 "6a34bb553e18cfac7297b4031f3eac2558e439f8d16a45945c22945ac404105d")
|
||||
+ set(WEBVIEW2_SHA256 "51d2ef56196e2a9d768a6843385bcb9c6baf9ed34b2603ddb074fb4995543a99")
|
||||
|
||||
set(WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_BINARY_DIR}/packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION}")
|
||||
|
||||
diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h
|
||||
index 30529db8ce..e6a12366d5 100644
|
||||
--- a/include/wx/fontutil.h
|
||||
+++ b/include/wx/fontutil.h
|
||||
@@ -294,7 +294,11 @@ public:
|
||||
wxFontEncoding GetEncoding() const;
|
||||
|
||||
void SetPointSize(int pointsize);
|
||||
- void SetFractionalPointSize(double pointsize);
|
||||
+ void SetFractionalPointSize(double pointsize
|
||||
+#if defined(__WXMSW__)
|
||||
+ , const wxWindow *window = nullptr
|
||||
+#endif
|
||||
+ );
|
||||
void SetPixelSize(const wxSize& pixelSize);
|
||||
void SetStyle(wxFontStyle style);
|
||||
void SetNumericWeight(int weight);
|
||||
@@ -307,12 +311,19 @@ public:
|
||||
|
||||
// Helper used in many ports: use the normal font size if the input is
|
||||
// negative, as we handle -1 as meaning this for compatibility.
|
||||
- void SetSizeOrDefault(double size)
|
||||
+ void SetSizeOrDefault(double size
|
||||
+#if defined(__WXMSW__)
|
||||
+ , const wxWindow *window = nullptr
|
||||
+#endif
|
||||
+ )
|
||||
{
|
||||
SetFractionalPointSize
|
||||
(
|
||||
size < 0 ? wxNORMAL_FONT->GetFractionalPointSize()
|
||||
: size
|
||||
+#if defined(__WXMSW__)
|
||||
+ ,window
|
||||
+#endif
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h
|
||||
index 2f5f8ee99f..39e9317d40 100644
|
||||
--- a/include/wx/gdicmn.h
|
||||
+++ b/include/wx/gdicmn.h
|
||||
@@ -38,6 +38,7 @@ class WXDLLIMPEXP_FWD_CORE wxRegion;
|
||||
class WXDLLIMPEXP_FWD_BASE wxString;
|
||||
class WXDLLIMPEXP_FWD_CORE wxIconBundle;
|
||||
class WXDLLIMPEXP_FWD_CORE wxPoint;
|
||||
+class WXDLLIMPEXP_FWD_CORE wxWindow;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// constants
|
||||
@@ -1106,7 +1107,9 @@ extern int WXDLLIMPEXP_CORE wxDisplayDepth();
|
||||
|
||||
// get the display size
|
||||
extern void WXDLLIMPEXP_CORE wxDisplaySize(int *width, int *height);
|
||||
+extern void WXDLLIMPEXP_CORE wxDisplaySize(const wxWindow *window, int *width, int *height);
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize();
|
||||
+extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize(const wxWindow *window);
|
||||
extern void WXDLLIMPEXP_CORE wxDisplaySizeMM(int *width, int *height);
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySizeMM();
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplayPPI();
|
||||
diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h
|
||||
index 1bd58bbf04..903cb81319 100644
|
||||
--- a/include/wx/generic/grid.h
|
||||
+++ b/include/wx/generic/grid.h
|
||||
@@ -3029,9 +3029,11 @@ private:
|
||||
// Update the width/height of the column/row being drag-resized.
|
||||
// Should be only called when m_dragRowOrCol != -1, i.e. dragging is
|
||||
// actually in progress.
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
void DoGridDragResize(const wxPoint& position,
|
||||
const wxGridOperations& oper,
|
||||
- wxGridWindow* gridWindow);
|
||||
+ wxGridWindow* gridWindow,
|
||||
+ CursorMode mode);
|
||||
|
||||
// process different clicks on grid cells
|
||||
void DoGridCellLeftDown(wxMouseEvent& event,
|
||||
diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h
|
||||
index 0f9768b44e..094d774918 100644
|
||||
--- a/include/wx/msw/font.h
|
||||
+++ b/include/wx/msw/font.h
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
// ctors and such
|
||||
wxFont() { }
|
||||
|
||||
- wxFont(const wxFontInfo& info);
|
||||
+ wxFont(const wxFontInfo& info, const wxWindow *window = nullptr);
|
||||
|
||||
wxFont(int size,
|
||||
wxFontFamily family,
|
||||
diff --git a/include/wx/msw/tooltip.h b/include/wx/msw/tooltip.h
|
||||
index 4c3be08cec..96fb378d01 100644
|
||||
--- a/include/wx/msw/tooltip.h
|
||||
+++ b/include/wx/msw/tooltip.h
|
||||
@@ -91,10 +91,10 @@ private:
|
||||
// the one and only one tooltip control we use - never access it directly
|
||||
// but use GetToolTipCtrl() which will create it when needed
|
||||
static WXHWND ms_hwndTT;
|
||||
-
|
||||
+public:
|
||||
// create the tooltip ctrl if it doesn't exist yet and return its HWND
|
||||
static WXHWND GetToolTipCtrl();
|
||||
-
|
||||
+private:
|
||||
// to be used in wxModule for deleting tooltip ctrl window when exiting mainloop
|
||||
static void DeleteToolTipCtrl();
|
||||
|
||||
diff --git a/include/wx/osx/app.h b/include/wx/osx/app.h
|
||||
index 317a0ca96f..58014ec1d4 100644
|
||||
--- a/include/wx/osx/app.h
|
||||
+++ b/include/wx/osx/app.h
|
||||
@@ -161,7 +161,7 @@ private:
|
||||
|
||||
public:
|
||||
bool OSXInitWasCalled() { return m_inited; }
|
||||
- void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; }
|
||||
+ virtual void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; }
|
||||
void OSXStorePrintFiles(const wxArrayString &files ) { m_printFiles = files ; }
|
||||
void OSXStoreOpenURL(const wxString &url ) { m_getURL = url ; }
|
||||
#endif
|
||||
diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp
|
||||
index 80408c6677..aa07caebdc 100644
|
||||
--- a/src/common/combocmn.cpp
|
||||
+++ b/src/common/combocmn.cpp
|
||||
@@ -2061,6 +2061,9 @@ void wxComboCtrlBase::ShowPopup()
|
||||
|
||||
SetFocus();
|
||||
|
||||
+ //int displayIdx = wxDisplay::GetFromWindow(this);
|
||||
+ //wxRect displayRect = wxDisplay(displayIdx != wxNOT_FOUND ? displayIdx : 0u).GetGeometry();
|
||||
+
|
||||
// Space above and below
|
||||
int screenHeight;
|
||||
wxPoint scrPos;
|
||||
@@ -2183,9 +2186,13 @@ void wxComboCtrlBase::ShowPopup()
|
||||
|
||||
int showFlags = CanDeferShow;
|
||||
|
||||
- if ( spaceBelow < szp.y )
|
||||
+ int anchorSideVertical = m_anchorSide & (wxUP | wxDOWN);
|
||||
+ if (// Pop up as asked for by the library user.
|
||||
+ (anchorSideVertical & wxUP) ||
|
||||
+ // Automatic: Pop up if it does not fit down.
|
||||
+ (anchorSideVertical == 0 && spaceBelow < szp.y ))
|
||||
{
|
||||
- popupY = scrPos.y - szp.y;
|
||||
+ popupY = scrPos.y - szp.y + displayRect.GetTop();
|
||||
showFlags |= ShowAbove;
|
||||
}
|
||||
|
||||
diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp
|
||||
index 0a1e43ad51..6c492aedab 100644
|
||||
--- a/src/common/datavcmn.cpp
|
||||
+++ b/src/common/datavcmn.cpp
|
||||
@@ -1334,7 +1334,11 @@ wxDataViewItem wxDataViewCtrlBase::GetSelection() const
|
||||
|
||||
wxDataViewItemArray selections;
|
||||
GetSelections(selections);
|
||||
- return selections[0];
|
||||
+ // BBS
|
||||
+ if (!selections.empty())
|
||||
+ return selections[0];
|
||||
+ else
|
||||
+ return wxDataViewItem(0);
|
||||
}
|
||||
|
||||
namespace
|
||||
diff --git a/src/common/dcbufcmn.cpp b/src/common/dcbufcmn.cpp
|
||||
index 9b1c1f3159..ef5865ed4b 100644
|
||||
--- a/src/common/dcbufcmn.cpp
|
||||
+++ b/src/common/dcbufcmn.cpp
|
||||
@@ -83,9 +83,15 @@ private:
|
||||
const double scale = dc ? dc->GetContentScaleFactor() : 1.0;
|
||||
wxBitmap* const buffer = new wxBitmap;
|
||||
|
||||
+#if __WXMSW__
|
||||
+ // we must always return a valid bitmap but creating a bitmap of
|
||||
+ // size 0 would fail, so create a 1*1 bitmap in this case
|
||||
+ buffer->Create(wxMax(w, 1), wxMax(h, 1), 24);
|
||||
+#else
|
||||
// we must always return a valid bitmap but creating a bitmap of
|
||||
// size 0 would fail, so create a 1*1 bitmap in this case
|
||||
buffer->CreateWithDIPSize(wxMax(w, 1), wxMax(h, 1), scale);
|
||||
+#endif
|
||||
|
||||
return buffer;
|
||||
}
|
||||
diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp
|
||||
index db8a01f961..162c1ce2dc 100644
|
||||
--- a/src/common/gdicmn.cpp
|
||||
+++ b/src/common/gdicmn.cpp
|
||||
@@ -863,11 +863,25 @@ void wxDisplaySize(int *width, int *height)
|
||||
*height = size.y;
|
||||
}
|
||||
|
||||
+void wxDisplaySize(const wxWindow *window, int *width, int *height)
|
||||
+{
|
||||
+ const wxSize size = wxGetDisplaySize(window);
|
||||
+ if ( width )
|
||||
+ *width = size.x;
|
||||
+ if ( height )
|
||||
+ *height = size.y;
|
||||
+}
|
||||
+
|
||||
wxSize wxGetDisplaySize()
|
||||
{
|
||||
return wxDisplay().GetGeometry().GetSize();
|
||||
}
|
||||
|
||||
+wxSize wxGetDisplaySize(const wxWindow *window)
|
||||
+{
|
||||
+ return window ? wxDisplay(window).GetGeometry().GetSize() : wxDisplay().GetGeometry().GetSize();
|
||||
+}
|
||||
+
|
||||
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
|
||||
{
|
||||
const wxRect rect = wxGetClientDisplayRect();
|
||||
diff --git a/src/common/image.cpp b/src/common/image.cpp
|
||||
index 19fe34ec91..a449b60930 100644
|
||||
--- a/src/common/image.cpp
|
||||
+++ b/src/common/image.cpp
|
||||
@@ -390,11 +390,11 @@ wxImage wxImage::ShrinkBy( int xFactor , int yFactor ) const
|
||||
unsigned char red = pixel[0] ;
|
||||
unsigned char green = pixel[1] ;
|
||||
unsigned char blue = pixel[2] ;
|
||||
- unsigned char alpha = 255 ;
|
||||
- if ( source_alpha )
|
||||
- alpha = *(source_alpha + y_offset + x * xFactor + x1) ;
|
||||
if ( !hasMask || red != maskRed || green != maskGreen || blue != maskBlue )
|
||||
{
|
||||
+ unsigned char alpha = 255 ;
|
||||
+ if ( source_alpha )
|
||||
+ alpha = *(source_alpha + y_offset + x * xFactor + x1) ;
|
||||
if ( alpha > 0 )
|
||||
{
|
||||
avgRed += red ;
|
||||
diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp
|
||||
index ed3d988994..d71cda122d 100644
|
||||
--- a/src/generic/grid.cpp
|
||||
+++ b/src/generic/grid.cpp
|
||||
@@ -4068,7 +4068,8 @@ void wxGrid::ProcessRowColLabelMouseEvent( const wxGridOperations &oper, wxMouse
|
||||
{
|
||||
if ( m_cursorMode == oper.GetCursorModeResize() )
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), oper, gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), oper, gridWindow, m_cursorMode);
|
||||
}
|
||||
else if ( m_cursorMode == oper.GetCursorModeSelect() && line >=0 )
|
||||
{
|
||||
@@ -4691,12 +4692,14 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event,
|
||||
|
||||
case WXGRID_CURSOR_RESIZE_ROW:
|
||||
if ( m_dragRowOrCol != -1 )
|
||||
- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW);
|
||||
break;
|
||||
|
||||
case WXGRID_CURSOR_RESIZE_COL:
|
||||
if ( m_dragRowOrCol != -1 )
|
||||
- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -4791,6 +4794,8 @@ wxGrid::DoGridCellLeftDown(wxMouseEvent& event,
|
||||
case wxGridSelectCells:
|
||||
case wxGridSelectRowsOrColumns:
|
||||
// nothing to do in these cases
|
||||
+ //BBS: select this cell when first click
|
||||
+ m_selection->SelectBlock(coords.GetRow(), coords.GetCol(), coords.GetRow(), coords.GetCol(), event);
|
||||
break;
|
||||
|
||||
case wxGridSelectRows:
|
||||
@@ -5049,9 +5054,11 @@ void wxGrid::ProcessGridCellMouseEvent(wxMouseEvent& event, wxGridWindow *eventG
|
||||
}
|
||||
}
|
||||
|
||||
+//BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
void wxGrid::DoGridDragResize(const wxPoint& position,
|
||||
const wxGridOperations& oper,
|
||||
- wxGridWindow* gridWindow)
|
||||
+ wxGridWindow* gridWindow,
|
||||
+ CursorMode mode)
|
||||
{
|
||||
wxCHECK_RET( m_dragRowOrCol != -1,
|
||||
"shouldn't be called when not drag resizing" );
|
||||
@@ -5064,10 +5071,28 @@ void wxGrid::DoGridDragResize(const wxPoint& position,
|
||||
// orthogonal direction.
|
||||
const int linePos = oper.Dual().Select(logicalPos);
|
||||
|
||||
- const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol);
|
||||
- oper.SetLineSize(this, m_dragRowOrCol,
|
||||
+ //BBS: add logic for resize multiplexed cols
|
||||
+ if (mode == WXGRID_CURSOR_RESIZE_COL) {
|
||||
+ int col_to_resize = m_dragRowOrCol;
|
||||
+ int num_rows, num_cols;
|
||||
+ this->GetCellSize(0, m_dragRowOrCol, &num_rows, &num_cols);
|
||||
+ if (num_cols < 1)
|
||||
+ col_to_resize = m_dragRowOrCol - 1;
|
||||
+
|
||||
+ const int lineEnd = oper.GetLineEndPos(this, m_dragRowOrCol);
|
||||
+ const int lineSize = oper.GetLineSize(this, col_to_resize);
|
||||
+ int size = linePos - lineEnd + lineSize;
|
||||
+ oper.SetLineSize(this, col_to_resize,
|
||||
+ wxMax(size,
|
||||
+ oper.GetMinimalLineSize(this, col_to_resize)));
|
||||
+ }
|
||||
+ else {
|
||||
+ const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol);
|
||||
+
|
||||
+ oper.SetLineSize(this, m_dragRowOrCol,
|
||||
wxMax(linePos - lineStart,
|
||||
oper.GetMinimalLineSize(this, m_dragRowOrCol)));
|
||||
+ }
|
||||
|
||||
// TODO: generate RESIZING event, see #10754, if the size has changed.
|
||||
}
|
||||
@@ -5090,7 +5115,8 @@ wxPoint wxGrid::GetPositionForResizeEvent(int width) const
|
||||
|
||||
void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWindow)
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW);
|
||||
|
||||
SendGridSizeEvent(wxEVT_GRID_ROW_SIZE, m_dragRowOrCol, event);
|
||||
|
||||
@@ -5099,7 +5125,8 @@ void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWin
|
||||
|
||||
void wxGrid::DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow* gridWindow)
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL);
|
||||
|
||||
SendGridSizeEvent(wxEVT_GRID_COL_SIZE, m_dragRowOrCol, event);
|
||||
|
||||
@@ -5113,9 +5140,10 @@ void wxGrid::DoHeaderStartDragResizeCol(int col)
|
||||
|
||||
void wxGrid::DoHeaderDragResizeCol(int width)
|
||||
{
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
DoGridDragResize(GetPositionForResizeEvent(width),
|
||||
wxGridColumnOperations(),
|
||||
- m_gridWin);
|
||||
+ m_gridWin, WXGRID_CURSOR_RESIZE_COL);
|
||||
}
|
||||
|
||||
void wxGrid::DoHeaderEndDragResizeCol(int width)
|
||||
@@ -6013,6 +6041,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
|
||||
DisableCellEditControl();
|
||||
|
||||
MoveCursorDown( event.ShiftDown() );
|
||||
+ //BBS: select this cell when first click
|
||||
+ m_selection->SelectBlock(m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(),
|
||||
+ m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(),
|
||||
+ event);
|
||||
}
|
||||
break;
|
||||
|
||||
diff --git a/src/msw/bmpcbox.cpp b/src/msw/bmpcbox.cpp
|
||||
index 011bd4f534..17e7f18740 100644
|
||||
--- a/src/msw/bmpcbox.cpp
|
||||
+++ b/src/msw/bmpcbox.cpp
|
||||
@@ -156,13 +156,20 @@ void wxBitmapComboBox::RecreateControl()
|
||||
|
||||
wxComboBox::DoClear();
|
||||
|
||||
- HWND hwnd = GetHwnd();
|
||||
+ WNDPROC wndproc_edit = nullptr;
|
||||
+ WinStruct<COMBOBOXINFO> combobox_info;
|
||||
+ HWND hwnd = GetHwnd();
|
||||
+if (::GetComboBoxInfo(hwnd, &combobox_info))
|
||||
+ wndproc_edit = (WNDPROC)wxGetWindowProc(combobox_info.hwndItem);
|
||||
DissociateHandle();
|
||||
::DestroyWindow(hwnd);
|
||||
|
||||
if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) )
|
||||
return;
|
||||
|
||||
+if (::GetComboBoxInfo(GetHwnd(), &combobox_info))
|
||||
+ wxSetWindowProc(combobox_info.hwndItem, wndproc_edit);
|
||||
+
|
||||
// initialize the controls contents
|
||||
for ( i = 0; i < numItems; i++ )
|
||||
{
|
||||
diff --git a/src/msw/font.cpp b/src/msw/font.cpp
|
||||
index 434876939c..91d4603018 100644
|
||||
--- a/src/msw/font.cpp
|
||||
+++ b/src/msw/font.cpp
|
||||
@@ -54,7 +54,7 @@ static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH;
|
||||
class WXDLLEXPORT wxFontRefData: public wxGDIRefData
|
||||
{
|
||||
public:
|
||||
- wxFontRefData(const wxFontInfo& info = wxFontInfo());
|
||||
+ wxFontRefData(const wxFontInfo& info = wxFontInfo(), const wxWindow* window = nullptr);
|
||||
|
||||
wxFontRefData(const wxNativeFontInfo& info, WXHFONT hFont = 0)
|
||||
{
|
||||
@@ -324,7 +324,7 @@ protected:
|
||||
// wxFontRefData
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
-wxFontRefData::wxFontRefData(const wxFontInfo& info)
|
||||
+wxFontRefData::wxFontRefData(const wxFontInfo& info, const wxWindow *window)
|
||||
{
|
||||
m_hFont = NULL;
|
||||
|
||||
@@ -335,7 +335,7 @@ wxFontRefData::wxFontRefData(const wxFontInfo& info)
|
||||
}
|
||||
else
|
||||
{
|
||||
- m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize());
|
||||
+ m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize(), window);
|
||||
}
|
||||
|
||||
SetStyle(info.GetStyle());
|
||||
@@ -518,12 +518,12 @@ wxFontEncoding wxNativeFontInfo::GetEncoding() const
|
||||
return wxGetFontEncFromCharSet(lf.lfCharSet);
|
||||
}
|
||||
|
||||
-void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew)
|
||||
+void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew, const wxWindow *window)
|
||||
{
|
||||
// We don't have the correct DPI to use here, so use that of the
|
||||
// primary screen and rely on WXAdjustToPPI() changing it later if
|
||||
// necessary.
|
||||
- const int ppi = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
|
||||
+ const int ppi = window ? window->GetDPI().GetY() : ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
|
||||
lf.lfHeight = GetLogFontHeightAtPPI(pointSizeNew, ppi);
|
||||
|
||||
pointSize = pointSizeNew;
|
||||
@@ -812,9 +812,9 @@ wxFont::wxFont(const wxString& fontdesc)
|
||||
(void)Create(info);
|
||||
}
|
||||
|
||||
-wxFont::wxFont(const wxFontInfo& info)
|
||||
+wxFont::wxFont(const wxFontInfo& info, const wxWindow *window)
|
||||
{
|
||||
- m_refData = new wxFontRefData(info);
|
||||
+ m_refData = new wxFontRefData(info, window);
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)
|
||||
diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp
|
||||
index 0bd017a36a..3b98bf1678 100644
|
||||
--- a/src/msw/menuitem.cpp
|
||||
+++ b/src/msw/menuitem.cpp
|
||||
@@ -368,6 +368,8 @@ void MenuDrawData::Init(wxWindow const* window)
|
||||
// native menu uses small top margin for separator
|
||||
if ( SeparatorMargin.cyTopHeight >= 2 )
|
||||
SeparatorMargin.cyTopHeight -= 2;
|
||||
+
|
||||
+ SeparatorSize.cy = 0;
|
||||
}
|
||||
else
|
||||
#endif // wxUSE_UXTHEME
|
||||
diff --git a/src/msw/window.cpp b/src/msw/window.cpp
|
||||
index c529a4fa3b..7e547c64df 100644
|
||||
--- a/src/msw/window.cpp
|
||||
+++ b/src/msw/window.cpp
|
||||
@@ -4809,33 +4809,49 @@ static wxSize GetWindowDPI(HWND hwnd)
|
||||
}
|
||||
|
||||
/*extern*/
|
||||
-int wxGetSystemMetrics(int nIndex, const wxWindow* window)
|
||||
+int wxGetSystemMetrics(int nIndex, const wxWindow* win)
|
||||
{
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
- if ( !window )
|
||||
- window = wxApp::GetMainTopWindow();
|
||||
+ const wxWindow* window = (!win && wxTheApp) ? wxTheApp->GetTopWindow() : win;
|
||||
|
||||
- if ( window )
|
||||
+ if (window)
|
||||
{
|
||||
- typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi);
|
||||
- static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL;
|
||||
- static bool s_initDone = false;
|
||||
-
|
||||
- if ( !s_initDone )
|
||||
- {
|
||||
- wxLoadedDLL dllUser32("user32.dll");
|
||||
- wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32);
|
||||
- s_initDone = true;
|
||||
+#if 1
|
||||
+ if (window->GetHWND() && (nIndex == SM_CXSCREEN || nIndex == SM_CYSCREEN)) {
|
||||
+ HDC hdc = GetDC(window->GetHWND());
|
||||
+#if 0
|
||||
+ double dim = GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES);
|
||||
+ ReleaseDC(window->GetHWND(), hdc);
|
||||
+ wxSize dpi = window->GetDPI();
|
||||
+ dim *= 96.0 / (nIndex == SM_CXSCREEN ? dpi.x : dpi.y);
|
||||
+ return int(dim + 0.5);
|
||||
+#else
|
||||
+ return int(GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES));
|
||||
+#endif
|
||||
}
|
||||
-
|
||||
- if ( s_pfnGetSystemMetricsForDpi )
|
||||
+ else
|
||||
+#endif
|
||||
{
|
||||
- const int dpi = window->GetDPI().y;
|
||||
- return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi);
|
||||
+ typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi);
|
||||
+ static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL;
|
||||
+ static bool s_initDone = false;
|
||||
+
|
||||
+ if ( !s_initDone )
|
||||
+ {
|
||||
+ wxLoadedDLL dllUser32("user32.dll");
|
||||
+ wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32);
|
||||
+ s_initDone = true;
|
||||
+ }
|
||||
+
|
||||
+ if ( s_pfnGetSystemMetricsForDpi )
|
||||
+ {
|
||||
+ const int dpi = window->GetDPI().y;
|
||||
+ return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
#else
|
||||
- wxUnusedVar(window);
|
||||
+ wxUnusedVar(win);
|
||||
#endif // wxUSE_DYNLIB_CLASS
|
||||
|
||||
return ::GetSystemMetrics(nIndex);
|
||||
diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm
|
||||
index f188e61089..7b867002d1 100644
|
||||
--- a/src/osx/cocoa/dataview.mm
|
||||
+++ b/src/osx/cocoa/dataview.mm
|
||||
@@ -1604,6 +1604,15 @@ outlineView:(NSOutlineView*)outlineView
|
||||
}
|
||||
}
|
||||
|
||||
+//FIXME Vojtech: This is a workaround to get at least the "mouse move" events at the wxDataViewControl,
|
||||
+// so we can show the tooltips. The "mouse move" events are being send only if the wxDataViewControl
|
||||
+// has focus, which is a limitation of wxWidgets. We may grab focus on "mouse entry" though.
|
||||
+- (void)mouseMoved:(NSEvent *)event
|
||||
+{
|
||||
+if (! implementation->DoHandleMouseEvent(event))
|
||||
+ [super mouseMoved:event];
|
||||
+}
|
||||
+
|
||||
//
|
||||
// contextual menus
|
||||
//
|
||||
@@ -2006,7 +2015,8 @@ void wxCocoaDataViewControl::keyEvent(WX_NSEvent event, WXWidget slf, void *_cmd
|
||||
if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) )
|
||||
wxWidgetCocoaImpl::keyEvent(event, slf, _cmd);
|
||||
}
|
||||
- else
|
||||
+ //FIXME Vojtech's hack to get the accelerators assigned to the wxDataViewControl working.
|
||||
+ else if (! DoHandleKeyEvent(event))
|
||||
{
|
||||
wxWidgetCocoaImpl::keyEvent(event, slf, _cmd); // all other keys
|
||||
}
|
||||
@@ -2540,12 +2550,22 @@ void wxCocoaDataViewControl::DoSetIndent(int indent)
|
||||
|
||||
void wxCocoaDataViewControl::HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const
|
||||
{
|
||||
- NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(),point);
|
||||
+ NSTableHeaderView *headerView = [m_OutlineView headerView];
|
||||
+ if (headerView && point.y < headerView.visibleRect.size.height) {
|
||||
+ // The point is inside the header area.
|
||||
+ columnPtr = NULL;
|
||||
+ item = wxDataViewItem();
|
||||
+ return;
|
||||
+ }
|
||||
+ // Convert from the window coordinates to the virtual scrolled view coordinates.
|
||||
+ NSScrollView *scrollView = [m_OutlineView enclosingScrollView];
|
||||
+ const NSRect &visibleRect = scrollView.contentView.visibleRect;
|
||||
+ NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(),
|
||||
+ wxPoint(point.x + visibleRect.origin.x, point.y + visibleRect.origin.y));
|
||||
|
||||
int indexColumn;
|
||||
int indexRow;
|
||||
|
||||
-
|
||||
indexColumn = [m_OutlineView columnAtPoint:nativePoint];
|
||||
indexRow = [m_OutlineView rowAtPoint: nativePoint];
|
||||
if ((indexColumn >= 0) && (indexRow >= 0))
|
||||
diff --git a/src/osx/cocoa/settings.mm b/src/osx/cocoa/settings.mm
|
||||
index c819deeb0c..dc3c3b0b53 100644
|
||||
--- a/src/osx/cocoa/settings.mm
|
||||
+++ b/src/osx/cocoa/settings.mm
|
||||
@@ -222,7 +222,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Get a system metric, e.g. scrollbar size
|
||||
-int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUNUSED(win))
|
||||
+int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* win)
|
||||
{
|
||||
int value;
|
||||
|
||||
@@ -257,11 +257,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUN
|
||||
// TODO case wxSYS_WINDOWMIN_Y:
|
||||
|
||||
case wxSYS_SCREEN_X:
|
||||
- wxDisplaySize(&value, NULL);
|
||||
+ wxDisplaySize(win, &value, NULL);
|
||||
return value;
|
||||
|
||||
case wxSYS_SCREEN_Y:
|
||||
- wxDisplaySize(NULL, &value);
|
||||
+ wxDisplaySize(win, NULL, &value);
|
||||
return value;
|
||||
|
||||
// TODO case wxSYS_FRAMESIZE_X:
|
||||
diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm
|
||||
index 635ea286d4..42ae67e27a 100644
|
||||
--- a/src/osx/cocoa/window.mm
|
||||
+++ b/src/osx/cocoa/window.mm
|
||||
@@ -191,6 +191,9 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
|
||||
- (BOOL)isEnabled;
|
||||
- (void)setEnabled:(BOOL)flag;
|
||||
|
||||
+- (BOOL)clipsToBounds;
|
||||
+- (void)setClipsToBounds:(BOOL)clipsToBounds;
|
||||
+
|
||||
- (void)setImage:(NSImage *)image;
|
||||
- (void)setControlSize:(NSControlSize)size;
|
||||
|
||||
@@ -2559,6 +2562,7 @@ wxWidgetImpl( peer, flags )
|
||||
if ( m_osxView )
|
||||
CFRetain(m_osxView);
|
||||
[m_osxView release];
|
||||
+ m_osxView.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.42.0.windows.2
|
||||
|
||||
743
deps/wxWidgets/0001-wx-3.1.5-patch-for-Orca.patch
vendored
743
deps/wxWidgets/0001-wx-3.1.5-patch-for-Orca.patch
vendored
@@ -1,743 +0,0 @@
|
||||
From 5e82980ed1762338794d06b3f9f22fa10e050622 Mon Sep 17 00:00:00 2001
|
||||
From: SoftFever <softfeverever@gmail.com>
|
||||
Date: Sat, 23 Dec 2023 20:08:41 +0800
|
||||
Subject: [PATCH] wx 3.1.5 patch for Orca
|
||||
|
||||
---
|
||||
build/cmake/init.cmake | 4 ++
|
||||
build/cmake/lib/webview/CMakeLists.txt | 4 +-
|
||||
include/wx/fontutil.h | 15 +++++++-
|
||||
include/wx/gdicmn.h | 3 ++
|
||||
include/wx/generic/grid.h | 4 +-
|
||||
include/wx/msw/font.h | 2 +-
|
||||
include/wx/msw/tooltip.h | 4 +-
|
||||
include/wx/osx/app.h | 2 +-
|
||||
src/common/combocmn.cpp | 13 +++++--
|
||||
src/common/datavcmn.cpp | 6 ++-
|
||||
src/common/dcbufcmn.cpp | 8 +++-
|
||||
src/common/gdicmn.cpp | 14 +++++++
|
||||
src/common/image.cpp | 6 +--
|
||||
src/common/intl.cpp | 7 ++++
|
||||
src/generic/grid.cpp | 53 +++++++++++++++++++++-----
|
||||
src/msw/bmpcbox.cpp | 9 ++++-
|
||||
src/msw/font.cpp | 14 +++----
|
||||
src/msw/menuitem.cpp | 2 +
|
||||
src/msw/window.cpp | 52 ++++++++++++++++---------
|
||||
src/osx/cocoa/dataview.mm | 26 +++++++++++--
|
||||
src/osx/cocoa/settings.mm | 6 +--
|
||||
src/osx/cocoa/window.mm | 4 ++
|
||||
22 files changed, 199 insertions(+), 59 deletions(-)
|
||||
|
||||
diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake
|
||||
index 0bc4f934b9..479431a69c 100644
|
||||
--- a/build/cmake/init.cmake
|
||||
+++ b/build/cmake/init.cmake
|
||||
@@ -413,7 +413,11 @@ if(wxUSE_GUI)
|
||||
else()
|
||||
find_package(OpenGL)
|
||||
if(WXGTK3 AND OpenGL_EGL_FOUND AND wxUSE_GLCANVAS_EGL)
|
||||
+ if(UNIX AND NOT APPLE)
|
||||
+ set(OPENGL_LIBRARIES OpenGL EGL)
|
||||
+ else()
|
||||
set(OPENGL_LIBRARIES OpenGL::OpenGL OpenGL::EGL)
|
||||
+ endif()
|
||||
find_package(WAYLANDEGL)
|
||||
if(WAYLANDEGL_FOUND AND wxHAVE_GDK_WAYLAND)
|
||||
list(APPEND OPENGL_LIBRARIES ${WAYLANDEGL_LIBRARIES})
|
||||
diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt
|
||||
index cc3298ff33..aa103ae474 100644
|
||||
--- a/build/cmake/lib/webview/CMakeLists.txt
|
||||
+++ b/build/cmake/lib/webview/CMakeLists.txt
|
||||
@@ -56,9 +56,9 @@ if(APPLE)
|
||||
elseif(WXMSW)
|
||||
if(wxUSE_WEBVIEW_EDGE)
|
||||
# Update the following variables if updating WebView2 SDK
|
||||
- set(WEBVIEW2_VERSION "1.0.705.50")
|
||||
+ set(WEBVIEW2_VERSION "1.0.1418.22")
|
||||
set(WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION}")
|
||||
- set(WEBVIEW2_SHA256 "6a34bb553e18cfac7297b4031f3eac2558e439f8d16a45945c22945ac404105d")
|
||||
+ set(WEBVIEW2_SHA256 "51d2ef56196e2a9d768a6843385bcb9c6baf9ed34b2603ddb074fb4995543a99")
|
||||
|
||||
set(WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_BINARY_DIR}/packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION}")
|
||||
|
||||
diff --git a/include/wx/fontutil.h b/include/wx/fontutil.h
|
||||
index 09ad8c8ef3..c228e167d7 100644
|
||||
--- a/include/wx/fontutil.h
|
||||
+++ b/include/wx/fontutil.h
|
||||
@@ -294,7 +294,11 @@ public:
|
||||
wxFontEncoding GetEncoding() const;
|
||||
|
||||
void SetPointSize(int pointsize);
|
||||
- void SetFractionalPointSize(double pointsize);
|
||||
+ void SetFractionalPointSize(double pointsize
|
||||
+#if defined(__WXMSW__)
|
||||
+ , const wxWindow *window = nullptr
|
||||
+#endif
|
||||
+ );
|
||||
void SetPixelSize(const wxSize& pixelSize);
|
||||
void SetStyle(wxFontStyle style);
|
||||
void SetNumericWeight(int weight);
|
||||
@@ -307,12 +311,19 @@ public:
|
||||
|
||||
// Helper used in many ports: use the normal font size if the input is
|
||||
// negative, as we handle -1 as meaning this for compatibility.
|
||||
- void SetSizeOrDefault(double size)
|
||||
+ void SetSizeOrDefault(double size
|
||||
+#if defined(__WXMSW__)
|
||||
+ , const wxWindow *window = nullptr
|
||||
+#endif
|
||||
+ )
|
||||
{
|
||||
SetFractionalPointSize
|
||||
(
|
||||
size < 0 ? wxNORMAL_FONT->GetFractionalPointSize()
|
||||
: size
|
||||
+#if defined(__WXMSW__)
|
||||
+ ,window
|
||||
+#endif
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h
|
||||
index e29a77627c..dc48cf9451 100644
|
||||
--- a/include/wx/gdicmn.h
|
||||
+++ b/include/wx/gdicmn.h
|
||||
@@ -38,6 +38,7 @@ class WXDLLIMPEXP_FWD_CORE wxRegion;
|
||||
class WXDLLIMPEXP_FWD_BASE wxString;
|
||||
class WXDLLIMPEXP_FWD_CORE wxIconBundle;
|
||||
class WXDLLIMPEXP_FWD_CORE wxPoint;
|
||||
+class WXDLLIMPEXP_FWD_CORE wxWindow;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// constants
|
||||
@@ -1092,7 +1093,9 @@ extern int WXDLLIMPEXP_CORE wxDisplayDepth();
|
||||
|
||||
// get the display size
|
||||
extern void WXDLLIMPEXP_CORE wxDisplaySize(int *width, int *height);
|
||||
+extern void WXDLLIMPEXP_CORE wxDisplaySize(const wxWindow *window, int *width, int *height);
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize();
|
||||
+extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySize(const wxWindow *window);
|
||||
extern void WXDLLIMPEXP_CORE wxDisplaySizeMM(int *width, int *height);
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplaySizeMM();
|
||||
extern wxSize WXDLLIMPEXP_CORE wxGetDisplayPPI();
|
||||
diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h
|
||||
index d7a3890764..e4dee51d5a 100644
|
||||
--- a/include/wx/generic/grid.h
|
||||
+++ b/include/wx/generic/grid.h
|
||||
@@ -2951,9 +2951,11 @@ private:
|
||||
wxGridWindow* gridWindow);
|
||||
|
||||
// Update the width/height of the column/row being drag-resized.
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
void DoGridDragResize(const wxPoint& position,
|
||||
const wxGridOperations& oper,
|
||||
- wxGridWindow* gridWindow);
|
||||
+ wxGridWindow* gridWindow,
|
||||
+ CursorMode mode);
|
||||
|
||||
// process different clicks on grid cells
|
||||
void DoGridCellLeftDown(wxMouseEvent& event,
|
||||
diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h
|
||||
index 0f9768b44e..094d774918 100644
|
||||
--- a/include/wx/msw/font.h
|
||||
+++ b/include/wx/msw/font.h
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
// ctors and such
|
||||
wxFont() { }
|
||||
|
||||
- wxFont(const wxFontInfo& info);
|
||||
+ wxFont(const wxFontInfo& info, const wxWindow *window = nullptr);
|
||||
|
||||
wxFont(int size,
|
||||
wxFontFamily family,
|
||||
diff --git a/include/wx/msw/tooltip.h b/include/wx/msw/tooltip.h
|
||||
index 4c3be08cec..96fb378d01 100644
|
||||
--- a/include/wx/msw/tooltip.h
|
||||
+++ b/include/wx/msw/tooltip.h
|
||||
@@ -91,10 +91,10 @@ private:
|
||||
// the one and only one tooltip control we use - never access it directly
|
||||
// but use GetToolTipCtrl() which will create it when needed
|
||||
static WXHWND ms_hwndTT;
|
||||
-
|
||||
+public:
|
||||
// create the tooltip ctrl if it doesn't exist yet and return its HWND
|
||||
static WXHWND GetToolTipCtrl();
|
||||
-
|
||||
+private:
|
||||
// to be used in wxModule for deleting tooltip ctrl window when exiting mainloop
|
||||
static void DeleteToolTipCtrl();
|
||||
|
||||
diff --git a/include/wx/osx/app.h b/include/wx/osx/app.h
|
||||
index 317a0ca96f..58014ec1d4 100644
|
||||
--- a/include/wx/osx/app.h
|
||||
+++ b/include/wx/osx/app.h
|
||||
@@ -161,7 +161,7 @@ private:
|
||||
|
||||
public:
|
||||
bool OSXInitWasCalled() { return m_inited; }
|
||||
- void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; }
|
||||
+ virtual void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; }
|
||||
void OSXStorePrintFiles(const wxArrayString &files ) { m_printFiles = files ; }
|
||||
void OSXStoreOpenURL(const wxString &url ) { m_getURL = url ; }
|
||||
#endif
|
||||
diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp
|
||||
index b61aac35bf..7cfc97d2f8 100644
|
||||
--- a/src/common/combocmn.cpp
|
||||
+++ b/src/common/combocmn.cpp
|
||||
@@ -2141,7 +2141,7 @@ void wxComboCtrlBase::CreatePopup()
|
||||
#if !USES_GENERICTLW
|
||||
m_winPopup = new wxComboPopupWindowBase2( this, wxNO_BORDER );
|
||||
#else
|
||||
- int tlwFlags = wxNO_BORDER;
|
||||
+ int tlwFlags = wxNO_BORDER | wxSTAY_ON_TOP;
|
||||
#ifdef wxCC_GENERIC_TLW_IS_FRAME
|
||||
tlwFlags |= wxFRAME_NO_TASKBAR;
|
||||
#endif
|
||||
@@ -2285,6 +2285,9 @@ void wxComboCtrlBase::ShowPopup()
|
||||
|
||||
SetFocus();
|
||||
|
||||
+ //int displayIdx = wxDisplay::GetFromWindow(this);
|
||||
+ //wxRect displayRect = wxDisplay(displayIdx != wxNOT_FOUND ? displayIdx : 0u).GetGeometry();
|
||||
+
|
||||
// Space above and below
|
||||
int screenHeight;
|
||||
wxPoint scrPos;
|
||||
@@ -2407,9 +2410,13 @@ void wxComboCtrlBase::ShowPopup()
|
||||
|
||||
int showFlags = CanDeferShow;
|
||||
|
||||
- if ( spaceBelow < szp.y )
|
||||
+ int anchorSideVertical = m_anchorSide & (wxUP | wxDOWN);
|
||||
+ if (// Pop up as asked for by the library user.
|
||||
+ (anchorSideVertical & wxUP) ||
|
||||
+ // Automatic: Pop up if it does not fit down.
|
||||
+ (anchorSideVertical == 0 && spaceBelow < szp.y ))
|
||||
{
|
||||
- popupY = scrPos.y - szp.y;
|
||||
+ popupY = scrPos.y - szp.y + displayRect.GetTop();
|
||||
showFlags |= ShowAbove;
|
||||
}
|
||||
|
||||
diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp
|
||||
index 1f5fd4d66b..14ea2f8ef1 100644
|
||||
--- a/src/common/datavcmn.cpp
|
||||
+++ b/src/common/datavcmn.cpp
|
||||
@@ -1322,7 +1322,11 @@ wxDataViewItem wxDataViewCtrlBase::GetSelection() const
|
||||
|
||||
wxDataViewItemArray selections;
|
||||
GetSelections(selections);
|
||||
- return selections[0];
|
||||
+ // BBS
|
||||
+ if (!selections.empty())
|
||||
+ return selections[0];
|
||||
+ else
|
||||
+ return wxDataViewItem(0);
|
||||
}
|
||||
|
||||
namespace
|
||||
diff --git a/src/common/dcbufcmn.cpp b/src/common/dcbufcmn.cpp
|
||||
index 74958fce10..59844f4526 100644
|
||||
--- a/src/common/dcbufcmn.cpp
|
||||
+++ b/src/common/dcbufcmn.cpp
|
||||
@@ -82,9 +82,15 @@ private:
|
||||
const double scale = dc ? dc->GetContentScaleFactor() : 1.0;
|
||||
wxBitmap* const buffer = new wxBitmap;
|
||||
|
||||
+#if __WXMSW__
|
||||
// we must always return a valid bitmap but creating a bitmap of
|
||||
// size 0 would fail, so create a 1*1 bitmap in this case
|
||||
- buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale);
|
||||
+ buffer->Create(wxMax(w, 1), wxMax(h, 1), 24);
|
||||
+#else
|
||||
+ // we must always return a valid bitmap but creating a bitmap of
|
||||
+ // size 0 would fail, so create a 1*1 bitmap in this case
|
||||
+ buffer->CreateScaled(wxMax(w, 1), wxMax(h, 1), -1, scale);
|
||||
+#endif
|
||||
|
||||
return buffer;
|
||||
}
|
||||
diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp
|
||||
index 20442bbc73..bc2c35bee6 100644
|
||||
--- a/src/common/gdicmn.cpp
|
||||
+++ b/src/common/gdicmn.cpp
|
||||
@@ -863,11 +863,25 @@ void wxDisplaySize(int *width, int *height)
|
||||
*height = size.y;
|
||||
}
|
||||
|
||||
+void wxDisplaySize(const wxWindow *window, int *width, int *height)
|
||||
+{
|
||||
+ const wxSize size = wxGetDisplaySize(window);
|
||||
+ if ( width )
|
||||
+ *width = size.x;
|
||||
+ if ( height )
|
||||
+ *height = size.y;
|
||||
+}
|
||||
+
|
||||
wxSize wxGetDisplaySize()
|
||||
{
|
||||
return wxDisplay().GetGeometry().GetSize();
|
||||
}
|
||||
|
||||
+wxSize wxGetDisplaySize(const wxWindow *window)
|
||||
+{
|
||||
+ return window ? wxDisplay(window).GetGeometry().GetSize() : wxDisplay().GetGeometry().GetSize();
|
||||
+}
|
||||
+
|
||||
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
|
||||
{
|
||||
const wxRect rect = wxGetClientDisplayRect();
|
||||
diff --git a/src/common/image.cpp b/src/common/image.cpp
|
||||
index 78fe5b82a3..46db8722ce 100644
|
||||
--- a/src/common/image.cpp
|
||||
+++ b/src/common/image.cpp
|
||||
@@ -383,11 +383,11 @@ wxImage wxImage::ShrinkBy( int xFactor , int yFactor ) const
|
||||
unsigned char red = pixel[0] ;
|
||||
unsigned char green = pixel[1] ;
|
||||
unsigned char blue = pixel[2] ;
|
||||
- unsigned char alpha = 255 ;
|
||||
- if ( source_alpha )
|
||||
- alpha = *(source_alpha + y_offset + x * xFactor + x1) ;
|
||||
if ( !hasMask || red != maskRed || green != maskGreen || blue != maskBlue )
|
||||
{
|
||||
+ unsigned char alpha = 255 ;
|
||||
+ if ( source_alpha )
|
||||
+ alpha = *(source_alpha + y_offset + x * xFactor + x1) ;
|
||||
if ( alpha > 0 )
|
||||
{
|
||||
avgRed += red ;
|
||||
diff --git a/src/common/intl.cpp b/src/common/intl.cpp
|
||||
index 0b0d8798f4..294f542b1f 100644
|
||||
--- a/src/common/intl.cpp
|
||||
+++ b/src/common/intl.cpp
|
||||
@@ -1628,6 +1628,12 @@ GetInfoFromLCID(LCID lcid,
|
||||
{
|
||||
str = buf;
|
||||
|
||||
+//FIXME Vojtech: We forcefully set the locales for a decimal point to "C", but this
|
||||
+// is not possible for the Win32 locales, therefore there is a discrepancy.
|
||||
+// It looks like we live with the discrepancy for at least half a year, so we will
|
||||
+// suppress the assert until we fix Slic3r to properly switch to "C" locales just
|
||||
+// for file import / export.
|
||||
+#if 0
|
||||
// As we get our decimal point separator from Win32 and not the
|
||||
// CRT there is a possibility of mismatch between them and this
|
||||
// can easily happen if the user code called setlocale()
|
||||
@@ -1641,6 +1647,7 @@ GetInfoFromLCID(LCID lcid,
|
||||
"Decimal separator mismatch -- did you use setlocale()?"
|
||||
"If so, use wxLocale to change the locale instead."
|
||||
);
|
||||
+#endif
|
||||
}
|
||||
break;
|
||||
|
||||
diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp
|
||||
index 41fd4524cf..f4a15cb839 100644
|
||||
--- a/src/generic/grid.cpp
|
||||
+++ b/src/generic/grid.cpp
|
||||
@@ -3824,7 +3824,8 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event, wxGridRowLabelWindo
|
||||
{
|
||||
case WXGRID_CURSOR_RESIZE_ROW:
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -4166,7 +4167,8 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event, wxGridColLabelWindo
|
||||
switch ( m_cursorMode )
|
||||
{
|
||||
case WXGRID_CURSOR_RESIZE_COL:
|
||||
- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL);
|
||||
break;
|
||||
|
||||
case WXGRID_CURSOR_SELECT_COL:
|
||||
@@ -4708,11 +4710,13 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event,
|
||||
return DoGridCellDrag(event, coords, isFirstDrag);
|
||||
|
||||
case WXGRID_CURSOR_RESIZE_ROW:
|
||||
- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW);
|
||||
break;
|
||||
|
||||
case WXGRID_CURSOR_RESIZE_COL:
|
||||
- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -4803,6 +4807,8 @@ wxGrid::DoGridCellLeftDown(wxMouseEvent& event,
|
||||
case wxGridSelectCells:
|
||||
case wxGridSelectRowsOrColumns:
|
||||
// nothing to do in these cases
|
||||
+ //BBS: select this cell when first click
|
||||
+ m_selection->SelectBlock(coords.GetRow(), coords.GetCol(), coords.GetRow(), coords.GetCol(), event);
|
||||
break;
|
||||
|
||||
case wxGridSelectRows:
|
||||
@@ -5044,9 +5050,11 @@ void wxGrid::ProcessGridCellMouseEvent(wxMouseEvent& event, wxGridWindow *eventG
|
||||
}
|
||||
}
|
||||
|
||||
+//BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
void wxGrid::DoGridDragResize(const wxPoint& position,
|
||||
const wxGridOperations& oper,
|
||||
- wxGridWindow* gridWindow)
|
||||
+ wxGridWindow* gridWindow,
|
||||
+ CursorMode mode)
|
||||
{
|
||||
// Get the logical position from the physical one we're passed.
|
||||
const wxPoint
|
||||
@@ -5056,10 +5064,28 @@ void wxGrid::DoGridDragResize(const wxPoint& position,
|
||||
// orthogonal direction.
|
||||
const int linePos = oper.Dual().Select(logicalPos);
|
||||
|
||||
- const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol);
|
||||
- oper.SetLineSize(this, m_dragRowOrCol,
|
||||
+ //BBS: add logic for resize multiplexed cols
|
||||
+ if (mode == WXGRID_CURSOR_RESIZE_COL) {
|
||||
+ int col_to_resize = m_dragRowOrCol;
|
||||
+ int num_rows, num_cols;
|
||||
+ this->GetCellSize(0, m_dragRowOrCol, &num_rows, &num_cols);
|
||||
+ if (num_cols < 1)
|
||||
+ col_to_resize = m_dragRowOrCol - 1;
|
||||
+
|
||||
+ const int lineEnd = oper.GetLineEndPos(this, m_dragRowOrCol);
|
||||
+ const int lineSize = oper.GetLineSize(this, col_to_resize);
|
||||
+ int size = linePos - lineEnd + lineSize;
|
||||
+ oper.SetLineSize(this, col_to_resize,
|
||||
+ wxMax(size,
|
||||
+ oper.GetMinimalLineSize(this, col_to_resize)));
|
||||
+ }
|
||||
+ else {
|
||||
+ const int lineStart = oper.GetLineStartPos(this, m_dragRowOrCol);
|
||||
+
|
||||
+ oper.SetLineSize(this, m_dragRowOrCol,
|
||||
wxMax(linePos - lineStart,
|
||||
oper.GetMinimalLineSize(this, m_dragRowOrCol)));
|
||||
+ }
|
||||
|
||||
// TODO: generate RESIZING event, see #10754, if the size has changed.
|
||||
}
|
||||
@@ -5082,7 +5108,8 @@ wxPoint wxGrid::GetPositionForResizeEvent(int width) const
|
||||
|
||||
void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWindow)
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow, WXGRID_CURSOR_RESIZE_ROW);
|
||||
|
||||
SendGridSizeEvent(wxEVT_GRID_ROW_SIZE, m_dragRowOrCol, -1, event);
|
||||
|
||||
@@ -5091,7 +5118,8 @@ void wxGrid::DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow* gridWin
|
||||
|
||||
void wxGrid::DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow* gridWindow)
|
||||
{
|
||||
- DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow);
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
+ DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow, WXGRID_CURSOR_RESIZE_COL);
|
||||
|
||||
SendGridSizeEvent(wxEVT_GRID_COL_SIZE, -1, m_dragRowOrCol, event);
|
||||
|
||||
@@ -5105,9 +5133,10 @@ void wxGrid::DoHeaderStartDragResizeCol(int col)
|
||||
|
||||
void wxGrid::DoHeaderDragResizeCol(int width)
|
||||
{
|
||||
+ //BBS: add cursor mode for DoGridDragResize's paremeters
|
||||
DoGridDragResize(GetPositionForResizeEvent(width),
|
||||
wxGridColumnOperations(),
|
||||
- m_gridWin);
|
||||
+ m_gridWin, WXGRID_CURSOR_RESIZE_COL);
|
||||
}
|
||||
|
||||
void wxGrid::DoHeaderEndDragResizeCol(int width)
|
||||
@@ -5891,6 +5920,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
|
||||
DisableCellEditControl();
|
||||
|
||||
MoveCursorDown( event.ShiftDown() );
|
||||
+ //BBS: select this cell when first click
|
||||
+ m_selection->SelectBlock(m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(),
|
||||
+ m_currentCellCoords.GetRow(), m_currentCellCoords.GetCol(),
|
||||
+ event);
|
||||
}
|
||||
break;
|
||||
|
||||
diff --git a/src/msw/bmpcbox.cpp b/src/msw/bmpcbox.cpp
|
||||
index 0a2d167ad7..0aeba45ea9 100644
|
||||
--- a/src/msw/bmpcbox.cpp
|
||||
+++ b/src/msw/bmpcbox.cpp
|
||||
@@ -156,13 +156,20 @@ void wxBitmapComboBox::RecreateControl()
|
||||
|
||||
wxComboBox::DoClear();
|
||||
|
||||
- HWND hwnd = GetHwnd();
|
||||
+ WNDPROC wndproc_edit = nullptr;
|
||||
+ WinStruct<COMBOBOXINFO> combobox_info;
|
||||
+ HWND hwnd = GetHwnd();
|
||||
+if (::GetComboBoxInfo(hwnd, &combobox_info))
|
||||
+ wndproc_edit = (WNDPROC)wxGetWindowProc(combobox_info.hwndItem);
|
||||
DissociateHandle();
|
||||
::DestroyWindow(hwnd);
|
||||
|
||||
if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) )
|
||||
return;
|
||||
|
||||
+if (::GetComboBoxInfo(GetHwnd(), &combobox_info))
|
||||
+ wxSetWindowProc(combobox_info.hwndItem, wndproc_edit);
|
||||
+
|
||||
// initialize the controls contents
|
||||
for ( i = 0; i < numItems; i++ )
|
||||
{
|
||||
diff --git a/src/msw/font.cpp b/src/msw/font.cpp
|
||||
index 0bd240d79f..d38b1b00f5 100644
|
||||
--- a/src/msw/font.cpp
|
||||
+++ b/src/msw/font.cpp
|
||||
@@ -54,7 +54,7 @@ static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH;
|
||||
class WXDLLEXPORT wxFontRefData: public wxGDIRefData
|
||||
{
|
||||
public:
|
||||
- wxFontRefData(const wxFontInfo& info = wxFontInfo());
|
||||
+ wxFontRefData(const wxFontInfo& info = wxFontInfo(), const wxWindow* window = nullptr);
|
||||
|
||||
wxFontRefData(const wxNativeFontInfo& info, WXHFONT hFont = 0)
|
||||
{
|
||||
@@ -324,7 +324,7 @@ protected:
|
||||
// wxFontRefData
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
-wxFontRefData::wxFontRefData(const wxFontInfo& info)
|
||||
+wxFontRefData::wxFontRefData(const wxFontInfo& info, const wxWindow *window)
|
||||
{
|
||||
m_hFont = NULL;
|
||||
|
||||
@@ -335,7 +335,7 @@ wxFontRefData::wxFontRefData(const wxFontInfo& info)
|
||||
}
|
||||
else
|
||||
{
|
||||
- m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize());
|
||||
+ m_nativeFontInfo.SetSizeOrDefault(info.GetFractionalPointSize(), window);
|
||||
}
|
||||
|
||||
SetStyle(info.GetStyle());
|
||||
@@ -518,12 +518,12 @@ wxFontEncoding wxNativeFontInfo::GetEncoding() const
|
||||
return wxGetFontEncFromCharSet(lf.lfCharSet);
|
||||
}
|
||||
|
||||
-void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew)
|
||||
+void wxNativeFontInfo::SetFractionalPointSize(double pointSizeNew, const wxWindow *window)
|
||||
{
|
||||
// We don't have the correct DPI to use here, so use that of the
|
||||
// primary screen and rely on WXAdjustToPPI() changing it later if
|
||||
// necessary.
|
||||
- const int ppi = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
|
||||
+ const int ppi = window ? window->GetDPI().GetY() : ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
|
||||
lf.lfHeight = GetLogFontHeightAtPPI(pointSizeNew, ppi);
|
||||
|
||||
pointSize = pointSizeNew;
|
||||
@@ -812,9 +812,9 @@ wxFont::wxFont(const wxString& fontdesc)
|
||||
(void)Create(info);
|
||||
}
|
||||
|
||||
-wxFont::wxFont(const wxFontInfo& info)
|
||||
+wxFont::wxFont(const wxFontInfo& info, const wxWindow *window)
|
||||
{
|
||||
- m_refData = new wxFontRefData(info);
|
||||
+ m_refData = new wxFontRefData(info, window);
|
||||
}
|
||||
|
||||
bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)
|
||||
diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp
|
||||
index 9bb397d472..30af7154a7 100644
|
||||
--- a/src/msw/menuitem.cpp
|
||||
+++ b/src/msw/menuitem.cpp
|
||||
@@ -368,6 +368,8 @@ void MenuDrawData::Init(wxWindow const* window)
|
||||
// native menu uses small top margin for separator
|
||||
if ( SeparatorMargin.cyTopHeight >= 2 )
|
||||
SeparatorMargin.cyTopHeight -= 2;
|
||||
+
|
||||
+ SeparatorSize.cy = 0;
|
||||
}
|
||||
else
|
||||
#endif // wxUSE_UXTHEME
|
||||
diff --git a/src/msw/window.cpp b/src/msw/window.cpp
|
||||
index eadc2f5700..f64fea4446 100644
|
||||
--- a/src/msw/window.cpp
|
||||
+++ b/src/msw/window.cpp
|
||||
@@ -4773,33 +4773,49 @@ static wxSize GetWindowDPI(HWND hwnd)
|
||||
}
|
||||
|
||||
/*extern*/
|
||||
-int wxGetSystemMetrics(int nIndex, const wxWindow* window)
|
||||
+int wxGetSystemMetrics(int nIndex, const wxWindow* win)
|
||||
{
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
- if ( !window )
|
||||
- window = wxApp::GetMainTopWindow();
|
||||
+ const wxWindow* window = (!win && wxTheApp) ? wxTheApp->GetTopWindow() : win;
|
||||
|
||||
- if ( window )
|
||||
+ if (window)
|
||||
{
|
||||
- typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi);
|
||||
- static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL;
|
||||
- static bool s_initDone = false;
|
||||
-
|
||||
- if ( !s_initDone )
|
||||
- {
|
||||
- wxLoadedDLL dllUser32("user32.dll");
|
||||
- wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32);
|
||||
- s_initDone = true;
|
||||
+#if 1
|
||||
+ if (window->GetHWND() && (nIndex == SM_CXSCREEN || nIndex == SM_CYSCREEN)) {
|
||||
+ HDC hdc = GetDC(window->GetHWND());
|
||||
+#if 0
|
||||
+ double dim = GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES);
|
||||
+ ReleaseDC(window->GetHWND(), hdc);
|
||||
+ wxSize dpi = window->GetDPI();
|
||||
+ dim *= 96.0 / (nIndex == SM_CXSCREEN ? dpi.x : dpi.y);
|
||||
+ return int(dim + 0.5);
|
||||
+#else
|
||||
+ return int(GetDeviceCaps(hdc, nIndex == SM_CXSCREEN ? HORZRES : VERTRES));
|
||||
+#endif
|
||||
}
|
||||
-
|
||||
- if ( s_pfnGetSystemMetricsForDpi )
|
||||
+ else
|
||||
+#endif
|
||||
{
|
||||
- const int dpi = window->GetDPI().y;
|
||||
- return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi);
|
||||
+ typedef int (WINAPI * GetSystemMetricsForDpi_t)(int nIndex, UINT dpi);
|
||||
+ static GetSystemMetricsForDpi_t s_pfnGetSystemMetricsForDpi = NULL;
|
||||
+ static bool s_initDone = false;
|
||||
+
|
||||
+ if ( !s_initDone )
|
||||
+ {
|
||||
+ wxLoadedDLL dllUser32("user32.dll");
|
||||
+ wxDL_INIT_FUNC(s_pfn, GetSystemMetricsForDpi, dllUser32);
|
||||
+ s_initDone = true;
|
||||
+ }
|
||||
+
|
||||
+ if ( s_pfnGetSystemMetricsForDpi )
|
||||
+ {
|
||||
+ const int dpi = window->GetDPI().y;
|
||||
+ return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
#else
|
||||
- wxUnusedVar(window);
|
||||
+ wxUnusedVar(win);
|
||||
#endif // wxUSE_DYNLIB_CLASS
|
||||
|
||||
return ::GetSystemMetrics(nIndex);
|
||||
diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm
|
||||
index 6ff0cc3088..4943f3ea38 100644
|
||||
--- a/src/osx/cocoa/dataview.mm
|
||||
+++ b/src/osx/cocoa/dataview.mm
|
||||
@@ -1734,12 +1734,22 @@ outlineView:(NSOutlineView*)outlineView
|
||||
if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) )
|
||||
[super keyDown:event];
|
||||
}
|
||||
- else
|
||||
+ //FIXME Vojtech's hack to get the accelerators assigned to the wxDataViewControl working.
|
||||
+ else if (! implementation->DoHandleKeyEvent(event))
|
||||
{
|
||||
[super keyDown:event]; // all other keys
|
||||
}
|
||||
}
|
||||
|
||||
+//FIXME Vojtech: This is a workaround to get at least the "mouse move" events at the wxDataViewControl,
|
||||
+// so we can show the tooltips. The "mouse move" events are being send only if the wxDataViewControl
|
||||
+// has focus, which is a limitation of wxWidgets. We may grab focus on "mouse entry" though.
|
||||
+- (void)mouseMoved:(NSEvent *)event
|
||||
+{
|
||||
+if (! implementation->DoHandleMouseEvent(event))
|
||||
+ [super mouseMoved:event];
|
||||
+}
|
||||
+
|
||||
//
|
||||
// contextual menus
|
||||
//
|
||||
@@ -2672,12 +2682,22 @@ void wxCocoaDataViewControl::DoSetIndent(int indent)
|
||||
|
||||
void wxCocoaDataViewControl::HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const
|
||||
{
|
||||
- NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(),point);
|
||||
+ NSTableHeaderView *headerView = [m_OutlineView headerView];
|
||||
+ if (headerView && point.y < headerView.visibleRect.size.height) {
|
||||
+ // The point is inside the header area.
|
||||
+ columnPtr = NULL;
|
||||
+ item = wxDataViewItem();
|
||||
+ return;
|
||||
+ }
|
||||
+ // Convert from the window coordinates to the virtual scrolled view coordinates.
|
||||
+ NSScrollView *scrollView = [m_OutlineView enclosingScrollView];
|
||||
+ const NSRect &visibleRect = scrollView.contentView.visibleRect;
|
||||
+ NSPoint const nativePoint = wxToNSPoint((NSScrollView*) GetWXWidget(),
|
||||
+ wxPoint(point.x + visibleRect.origin.x, point.y + visibleRect.origin.y));
|
||||
|
||||
int indexColumn;
|
||||
int indexRow;
|
||||
|
||||
-
|
||||
indexColumn = [m_OutlineView columnAtPoint:nativePoint];
|
||||
indexRow = [m_OutlineView rowAtPoint: nativePoint];
|
||||
if ((indexColumn >= 0) && (indexRow >= 0))
|
||||
diff --git a/src/osx/cocoa/settings.mm b/src/osx/cocoa/settings.mm
|
||||
index de5f52860c..a9581174a4 100644
|
||||
--- a/src/osx/cocoa/settings.mm
|
||||
+++ b/src/osx/cocoa/settings.mm
|
||||
@@ -224,7 +224,7 @@ wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Get a system metric, e.g. scrollbar size
|
||||
-int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUNUSED(win))
|
||||
+int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* win)
|
||||
{
|
||||
int value;
|
||||
|
||||
@@ -259,11 +259,11 @@ int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUN
|
||||
// TODO case wxSYS_WINDOWMIN_Y:
|
||||
|
||||
case wxSYS_SCREEN_X:
|
||||
- wxDisplaySize(&value, NULL);
|
||||
+ wxDisplaySize(win, &value, NULL);
|
||||
return value;
|
||||
|
||||
case wxSYS_SCREEN_Y:
|
||||
- wxDisplaySize(NULL, &value);
|
||||
+ wxDisplaySize(win, NULL, &value);
|
||||
return value;
|
||||
|
||||
// TODO case wxSYS_FRAMESIZE_X:
|
||||
diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm
|
||||
index b322e582c5..79de567333 100644
|
||||
--- a/src/osx/cocoa/window.mm
|
||||
+++ b/src/osx/cocoa/window.mm
|
||||
@@ -190,6 +190,9 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
|
||||
- (BOOL)isEnabled;
|
||||
- (void)setEnabled:(BOOL)flag;
|
||||
|
||||
+- (BOOL)clipsToBounds;
|
||||
+- (void)setClipsToBounds:(BOOL)clipsToBounds;
|
||||
+
|
||||
- (void)setImage:(NSImage *)image;
|
||||
- (void)setControlSize:(NSControlSize)size;
|
||||
|
||||
@@ -2505,6 +2508,7 @@ wxWidgetImpl( peer, flags )
|
||||
if ( m_osxView )
|
||||
CFRetain(m_osxView);
|
||||
[m_osxView release];
|
||||
+ m_osxView.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.41.0.windows.2
|
||||
|
||||
42
deps/wxWidgets/wxWidgets.cmake
vendored
42
deps/wxWidgets/wxWidgets.cmake
vendored
@@ -1,6 +1,3 @@
|
||||
set(_wx_version 3.1.5)
|
||||
set(_wx_git_tag v${_wx_version})
|
||||
|
||||
set(_wx_toolkit "")
|
||||
set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1")
|
||||
|
||||
@@ -20,37 +17,16 @@ else ()
|
||||
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
|
||||
endif ()
|
||||
|
||||
set(_wx_orcaslicer_patch "${CMAKE_CURRENT_LIST_DIR}/0001-wx-3.1.5-patch-for-Orca.patch")
|
||||
if (MSVC)
|
||||
set(_patch_cmd if not exist WXWIDGETS_PATCHED ( "${GIT_EXECUTABLE}" apply --verbose --ignore-space-change --whitespace=fix ${_wx_orcaslicer_patch} && type nul > WXWIDGETS_PATCHED ) )
|
||||
else ()
|
||||
set(_patch_cmd test -f WXWIDGETS_PATCHED || ${PATCH_CMD} ${_wx_orcaslicer_patch} && touch WXWIDGETS_PATCHED)
|
||||
endif ()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(_patch_cmd ${PATCH_CMD} ${_wx_orcaslicer_patch})
|
||||
endif ()
|
||||
|
||||
# Note: for anybody wanting to switch to tarball fetching - this won't just work as
|
||||
# git apply expects a git repo. Either git init empty repo, or change patching method.
|
||||
# if (WIN32)
|
||||
# # Windows requires a different tarball because of configured line endings as stated in docs.
|
||||
# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.7z)
|
||||
# set(_wx_tarball_hash 99f5382312e4a4aea444ada07341a72c5d4a69b58d8e76586d4b94ede7f5ef4d)
|
||||
# else()
|
||||
# set(_wx_tarball_url https://github.com/wxWidgets/wxWidgets/releases/download/${_wx_git_tag}/wxWidgets-${_wx_version}.tar.bz2)
|
||||
# set(_wx_tarball_hash d7b3666de33aa5c10ea41bb9405c40326e1aeb74ee725bb88f90f1d50270a224)
|
||||
# endif()
|
||||
# Note: The flatpak build builds wxwidgets separately due to CI size constraints.
|
||||
# ANY CHANGES MADE IN HERE MUST ALSO BE REFLECTED IN `flatpak/io.github.SoftFever.OrcaSlicer.yml`.
|
||||
# ** THIS INCLUDES BUILD ARGS. **
|
||||
# ...if you can find a way around this size limitation, be my guest.
|
||||
|
||||
orcaslicer_add_cmake_project(
|
||||
wxWidgets
|
||||
GIT_REPOSITORY "https://github.com/wxWidgets/wxWidgets"
|
||||
GIT_TAG ${_wx_git_tag}
|
||||
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
||||
GIT_SHALLOW ON
|
||||
# URL ${_wx_tarball_url}
|
||||
# URL_HASH SHA256=${_wx_tarball_hash}
|
||||
PATCH_COMMAND ${_patch_cmd}
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||
CMAKE_ARGS
|
||||
-DwxBUILD_PRECOMP=ON
|
||||
${_wx_toolkit}
|
||||
@@ -63,6 +39,7 @@ orcaslicer_add_cmake_project(
|
||||
-DwxUSE_UNICODE=ON
|
||||
${_wx_private_font}
|
||||
-DwxUSE_OPENGL=ON
|
||||
-DwxUSE_WEBREQUEST=ON
|
||||
-DwxUSE_WEBVIEW=ON
|
||||
${_wx_edge}
|
||||
-DwxUSE_WEBVIEW_IE=OFF
|
||||
@@ -75,10 +52,11 @@ orcaslicer_add_cmake_project(
|
||||
-DwxUSE_LIBPNG=sys
|
||||
-DwxUSE_ZLIB=sys
|
||||
-DwxUSE_LIBJPEG=sys
|
||||
-DwxUSE_LIBTIFF=sys
|
||||
-DwxUSE_LIBTIFF=OFF
|
||||
-DwxUSE_NANOSVG=OFF
|
||||
-DwxUSE_EXPAT=sys
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_wxWidgets)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
- [Flow rate](#Flow-rate)
|
||||
- [Pressure Advance](#Pressure-Advance)
|
||||
1. [Line method](#Line-method)
|
||||
2. [Pattern method](#Pattern-method)
|
||||
3. [Tower method](#Tower-method)
|
||||
- [Temp tower](#Temp-tower)
|
||||
- [Retraction test](#Retraction-test)
|
||||
- [Orca Tolerance Test](#Orca-Tolerance-Test)
|
||||
- [Advanced calibration](#Advanced-Calibration)
|
||||
1. [Max Volumetric speed](#Max-Volumetric-speed)
|
||||
2. [VFA]
|
||||
|
||||
**NOTE**: After completing the calibration process, remember to create a new project in order to exit the calibration mode.
|
||||
**NOTE2**: @ItsDeidara has made a webpage to help with the calculation. Check it out if those equations give you a headache [here](https://orcalibrate.com/).
|
||||
# Flow rate
|
||||
##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.*
|
||||

|
||||
----------------------------------------
|
||||

|
||||
Calibrating the flow rate involves a two-step process.
|
||||
Steps
|
||||
1. Select the printer, filament, and process you would like to use for the test.
|
||||
2. Select `Pass 1` in the `Calibration` menu
|
||||
3. A new project consisting of nine blocks will be created, each with a different flow rate modifier. Slice and print the project.
|
||||
4. Examine the blocks and determine which one has the smoothest top surface.
|
||||

|
||||

|
||||
|
||||
5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`. ** Remember** to save the filament profile.
|
||||
6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`.
|
||||
7. Repeat steps 4 and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. ** Remember ** to save the filament profile.
|
||||

|
||||

|
||||

|
||||
|
||||
# Pressure Advance
|
||||
|
||||
Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test.
|
||||
##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.*
|
||||

|
||||
|
||||
### Line method
|
||||
|
||||
The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
|
||||
Steps:
|
||||
1. Select the printer, filament, and process you would like to use for the test.
|
||||
2. Print the project and check the result. You can select the value of the most even line and update your PA value in the filament settings.
|
||||
3. In this test, a PA value of `0.016` appears to be optimal.
|
||||

|
||||
|
||||
<img width="1003" alt="Screenshot 2022-12-31 at 12 11 10 PM" src="https://user-images.githubusercontent.com/103989404/210124449-dd828da8-a7e4-46b8-9fa2-8bed5605d9f6.png">
|
||||
|
||||

|
||||

|
||||
|
||||
### Pattern method
|
||||
|
||||
The pattern method is adapted from [Andrew Ellis' pattern method generator](https://ellis3dp.com/Pressure_Linear_Advance_Tool/), which was itself derived from the [Marlin pattern method](https://marlinfw.org/tools/lin_advance/k-factor.html) developed by [Sineos](https://github.com/Sineos/k-factorjs).
|
||||
|
||||
[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few Orca Slicer differences to note.
|
||||
|
||||
First and foremost, when you initiate the test, you'll only see a small rectangular prism on the plate. This object serves a few purposes:
|
||||
|
||||
1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane**
|
||||
2. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
|
||||
3. The filament selected for the prism is also used for the test pattern
|
||||
|
||||
Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in Orca Slicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings:
|
||||
|
||||
1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter
|
||||
2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths
|
||||
3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
|
||||
4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
|
||||
|
||||
### Tower method
|
||||
|
||||
The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
|
||||
The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
|
||||
Steps:
|
||||
1. Select the printer, filament, and process you would like to use for the test.
|
||||
2. Examine each corner of the print and mark the height that yields the best overall result.
|
||||
3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `0.002x8 = 0.016`.
|
||||

|
||||
|
||||

|
||||
|
||||
# Temp tower
|
||||

|
||||
Temp tower is a straightforward test. The temp tower is a vertical tower with multiple blocks, each printed at a different temperature. Once the print is complete, we can examine each block of the tower and determine the optimal temperature for the filament. The optimal temperature is the one that produces the highest quality print with the least amount of issues, such as stringing, layer adhesion, warping (overhang), and bridging.
|
||||

|
||||
|
||||
# Retraction test
|
||||

|
||||
This test generates a retraction tower automatically. The retraction tower is a vertical structure with multiple notches, each printed at a different retraction length. After the print is complete, we can examine each section of the tower to determine the optimal retraction length for the filament. The optimal retraction length is the shortest one that produces the cleanest tower.
|
||||

|
||||
In the dialog, you can select the start and end retraction length, as well as the retraction length increment step. The default values are 0mm for the start retraction length, 2mm for the end retraction length, and 0.1mm for the step. These values are suitable for most direct drive extruders. However, for Bowden extruders, you may want to increase the start and end retraction lengths to 1mm and 6mm, respectively, and set the step to 0.2mm.
|
||||
|
||||
**Note**: When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using Orca Slicer should suffice.
|
||||
On the other hand, if there is still a lot of stringing at the top of the tower, it is recommended to dry your filament and ensure that your nozzle is properly installed without any leaks.
|
||||

|
||||
|
||||
# Orca Tolerance Test
|
||||
This tolerance test is specifically designed to assess the dimensional accuracy of your printer and filament. The model comprises a base and a hexagon tester. The base contains six hexagon hole, each with a different tolerance: 0.0mm, 0.05mm, 0.1mm, 0.2mm, 0.3mm, and 0.4mm. The dimensions of the hexagon tester are illustrated in the image.
|
||||

|
||||
|
||||
You can assess the tolerance using either an M6 Allen key or the printed hexagon tester.
|
||||

|
||||

|
||||
|
||||
# Advanced Calibration
|
||||
|
||||
## Max Volumetric speed
|
||||
This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
|
||||
|
||||
You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
|
||||
|
||||
Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.
|
||||
|
||||

|
||||
|
||||
Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.
|
||||
|
||||

|
||||
|
||||
You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.
|
||||
|
||||

|
||||
|
||||
#### *NOTE You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.*
|
||||
|
||||
***
|
||||
*Credits:*
|
||||
- *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)*
|
||||
- *The PA Line method is inspired by [K-factor Calibration Pattern](https://marlinfw.org/tools/lin_advance/k-factor.html)*
|
||||
- *The PA Tower method is inspired by [Klipper](https://www.klipper3d.org/Pressure_Advance.html)*
|
||||
- *The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076)
|
||||
- *The max flowrate test was inspired by Stefan(CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure).
|
||||
- *chapgpt* ;)
|
||||
@@ -1,52 +0,0 @@
|
||||
OrcaSlicer use `M141/M191` command to control active chamber heater.
|
||||
|
||||
If `Activate temperature control` is checked, OrcaSlicer will insert `M191` command at the beginning of the gcode(before `Machine G-code`).
|
||||

|
||||
*Note: If the machine is equipped with an auxiliary fan, OrcaSlicer will automatically activate the fan during the heating period to help circulate air in the chamber.*
|
||||
|
||||
|
||||
There are two chamber temperature variables available that we can use in `Machine G-code` to control the chamber temperature, if you prefer:
|
||||
To access the chamber temperature set in the first filament, use:
|
||||
`M191 S{chamber_temperature[0]}`
|
||||
To use the overall chamber temperature, which is the highest chamber temperature set across all filaments, use:
|
||||
`M191 S{overall_chamber_temperature}`
|
||||
|
||||
|
||||
--------------------------Klipper--------------------------
|
||||
If you are using Klipper, you can define these macros to control the active chamber heater.
|
||||
Bellow is a reference configuration for Klipper.
|
||||
*Note: Don't forget to change the pin name/values to the actual values you are using in the configuration*
|
||||
|
||||
```
|
||||
[heater_generic chamber_heater]
|
||||
heater_pin:PB10
|
||||
max_power:1.0
|
||||
# Orca note: here the temperature sensor should be the sensor you are using for chamber temperature, not the PTC sensor
|
||||
sensor_type:NTC 100K MGB18-104F39050L32
|
||||
sensor_pin:PA1
|
||||
control = pid
|
||||
pid_Kp = 63.418
|
||||
pid_ki = 0.960
|
||||
pid_kd = 1244.716
|
||||
min_temp:0
|
||||
max_temp:70
|
||||
|
||||
[gcode_macro M141]
|
||||
gcode:
|
||||
SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={params.S|default(0)}
|
||||
|
||||
[gcode_macro M191]
|
||||
gcode:
|
||||
{% set s = params.S|float %}
|
||||
{% if s == 0 %}
|
||||
# If target temperature is 0, do nothing
|
||||
M117 Chamber heating cancelled
|
||||
{% else %}
|
||||
SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={s}
|
||||
# Orca: uncomment the following line if you want to use heat bed to assist chamber heating
|
||||
# M140 S100
|
||||
TEMPERATURE_WAIT SENSOR="heater_generic chamber_heater" MINIMUM={s-1} MAXIMUM={s+1}
|
||||
M117 Chamber at target temperature
|
||||
{% endif %}
|
||||
|
||||
```
|
||||
@@ -1,181 +0,0 @@
|
||||
<h1>Extrusion rate smoothing</h1>
|
||||
|
||||
Extrusion rate smoothing (ERS), also known as pressure equalizer in Prusa Slicer, aims to **limit the rate of extrusion volume change to be below a user set threshold (the ERS value).** It aims to assist the printer firmware internal motion planners, pressure advance in achieving the desired nozzle flow and reducing deviations against the ideal flow.
|
||||
|
||||
This happens by reducing the stresses put on the extrusion system as well as reducing the absolute deviations from the ideal extrusion flow caused by pressure advance smooth time.
|
||||
|
||||
This feature is especially helpful when printing at high accelerations and large flow rates as the deviations are larger in these cases.
|
||||
|
||||

|
||||
|
||||
<h2>Theory</h2>
|
||||
|
||||
Enabling this feature creates a small **speed "ramp"** by slowing down and ramping up print speeds prior to and after the features causing a sudden change in extrusion flow rate needs, such as overhangs and overhang perimeters.
|
||||
|
||||
This works by breaking down the printed line segments into smaller "chunks", proportional to the ERS segment length, and reduces the print speed of these segments so that the **requested extrusion volumetric flow rate change is less than or equal to the ERS threshold**.
|
||||
|
||||
In summary, **it takes the "edge" off rapid extrusion changes caused by acceleration/deceleration as these are now spread over a longer distance and time.** Therefore, it can reduce wall artefacts that show when the print speeds change suddenly. These artefacts are occuring because the extruder and firmware cannot perfectly adhere to the requested by the slicer flow rates, especially when the extrusion rate is changing rapidly.
|
||||
|
||||
**The example below shows the artefact that is mitigated by ERS.**
|
||||

|
||||
|
||||
The bulging visible above is due to the extruder not being able to respond fast enough against the required speed change when printing with high accelerations and high speeds and requested to slow down for an overhang.
|
||||
|
||||
In the above scenario, the printer (Bambu Lab X1 Carbon) was requested to slow down from a 200mm/sec print speed to 40mm/sec at an acceleration of 5k/sec2. **The extruder could not keep up with the pressure change, resulting in a slight bump ahead at the point of speed change.**
|
||||
|
||||
This parameter interacts with the below printer kinematic settings and physical limits:
|
||||
|
||||
|
||||
**1. The limits of the extruder system** - how fast can it change pressure in the nozzle
|
||||
|
||||
**2. The configured pressure advance values** - that also affect pressure changes in the nozzle
|
||||
|
||||
**3. The acceleration profile of the printer** - higher accelerations mean higher pressure changes
|
||||
|
||||
**4. The pressure advance smooth time (klipper)** - higher smooth time means higher deviation from ideal extrusion, hence more opportunity for this feature to be useful.
|
||||
|
||||
|
||||
<h3>Acceleration vs. Extrusion rate smoothing</h3>
|
||||
A printer's motion system does not exactly follow the speed changes seen in the gcode preview screen of Orca slicer.
|
||||
|
||||
|
||||
When a speed change is requested, the firmware look ahead planner calculates the slow down needed to achieve the target speed. The rate of slowdown is limited by the move's acceleration value.
|
||||
|
||||
**Lets consider an example.** Assume printing an overhang wall with **2k external wall acceleration**, were the printer is called to slow down from **200mm/sec to 40mm/sec**.
|
||||
|
||||
This deceleration move would happen over approximately 9.6mm. This is derived from the following equation:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
The time taken to decelerate to this new speed would be approx. 0.08 seconds, derived from the following equation:
|
||||
|
||||

|
||||
|
||||
A printer printing at 200mm/sec with a 0.42 line width and 0.16 layer height would be extruding plastic at approx. 12.16mm3/sec, as can also be seen from the below visual.
|
||||
|
||||

|
||||
|
||||
When the printer is extruding at 40mm/sec with the same line width and layer height as above, the flow rate is 2.43mm3/sec.
|
||||
|
||||
So what we are asking the extruder to do in this example is **slow down from 12.16mm3/sec flow to 2.43mm3/sec flow in 0.08 seconds** or an extrusion change rate of 121mm3/sec2.
|
||||
|
||||
**This value is proportional to the acceleration of the printer. At 4k this value doubles, at 1k it is half and is independent of the speed of movement or starting and ending speeds.**
|
||||
|
||||
**This value is also proportional to the line width - double the line width will result in double the extrusion rate change and vice versa. Same for layer height.**
|
||||
|
||||
So, continuing with the worked example, a 2k acceleration produces an extrusion rate change ramp of 121mm3/sec2. **Therefore, setting a value higher than this would not bring any benefit to the print quality as the motion system would slow down less aggressively based on its acceleration settings.**
|
||||
|
||||
**Therefore, the acceleration values act as a meaningfull upper limit to this setting.** An indicative set of values has been provided later in this page.
|
||||
|
||||
<h3>Pressure advance vs extrusion rate smoothing</h3>
|
||||
|
||||
Then we need to consider pressure advance and smooth time as factors that influence extrusion rate.
|
||||
|
||||
**Pressure Advance** adjusts the extruder's speed to account for the pressure changes inside the hot end’s melt zone. When the print head moves and extrudes filament, there's a delay between the movement of the extruder gear and the plastic being extruded due to the compressibility of the molten plastic in the hot end. This delay can cause too much plastic to be extruded when the print head starts moving or not enough plastic when the print head stops, leading to issues like blobbing or under-extrusion.
|
||||
|
||||
**Pressure Advance Smooth time** helps to mitigate potential negative effects on print quality due to the rapid changes in extruder flow rate, which are controlled by the Pressure Advance algorithm. This parameter essentially adds a smoothing effect to the adjustments made by Pressure Advance, aiming to prevent sharp or sudden changes in the extrusion rate.
|
||||
|
||||
When Pressure Advance adjusts the extruder speed to compensate for the pressure build-up or reduction in the hot end, it can lead to abrupt changes in the flow rate. These abrupt changes can potentially cause issues like:
|
||||
|
||||
1. Extruder motor skipping,
|
||||
2. Increased wear on the extruder gear and filament,
|
||||
3. Visible artifacts on the print surface due to non-uniform extrusion.
|
||||
|
||||
The smooth time setting introduces a controlled delay over which the Pressure Advance adjustments are spread out. This results in a more gradual application or reduction of extrusion pressure, leading to smoother transitions in filament flow.
|
||||
|
||||
The trade-off is extrusion accuracy. There is a deviation between the requested extrusion amount and the actual extrusion amount due to this smoothing.
|
||||
|
||||
**1. Increasing Smooth Time:** Leads to more gradual changes in extrusion pressure. While this can reduce artifacts and stress on the extruder system, setting it too high may diminish the effectiveness of Pressure Advance, as the compensation becomes too delayed to counteract the pressure dynamics accurately.
|
||||
|
||||
**2. Decreasing Smooth Time:** Makes the Pressure Advance adjustments more immediate, which can improve the responsiveness of pressure compensation but may also reintroduce abrupt changes in flow rate, potentially leading to the issues mentioned above.
|
||||
|
||||
In essence, p**ressure advance smooth time creates an intentional deviation from the ideal extruder rotation** and, therefore, extrusion amount, to allow the printer's extruder to perform within its mechanical limits. Typically, this value is set to 0.04sec, which means that when Pressure Advance adjusts the extruder's flow rate to compensate for changes in pressure within the hot end, these adjustments are spread out over a period of 0.04 seconds.
|
||||
|
||||
There is a great example of pressure advance smooth time induced deviations [here](https://klipper.discourse.group/t/pressure-advance-smooth-time-skews-pressure-advance/13451) that is worth a read to get more insight in this trade-off.
|
||||
|
||||
In the worked example above, **we need to set an Extrusion Rate smoothing value enough to decrease the error introduced by pressure advance smooth time against the produced output flow.** The lower the extrusion rate smoothing value, the lower the changes in flow over time hence the lower the absolute deviation from the ideal extrusion caused by the smooth time algorithm. However, going too low will result in a material decrease in overall print speed, as the print speed will be materially reduced to achieve low extrusion deviations between features, for no real benefit after a point.
|
||||
|
||||
**The best way to find what the lower beneficial limit is through experimentation.** Print an object with sharp overhangs that are slowed down because off the overhang print speed settings and observe for extrusion inconsistencies.
|
||||
|
||||
<h2>Finding the ideal Extrusion Rate smoothing value</h2>
|
||||
|
||||
**Firstly, this value needs to be lower than the extrusion rate changes resulting from the acceleration profile of the printer.** As, generally, the greatest impact is in external wall finish, use your external perimeter acceleration as a point of reference.
|
||||
|
||||
**Below are some approximate ERS values for 0.42 line width and 0.16 layer height.**
|
||||
1. 30mm3/sec for 0.5k acceleration
|
||||
2. 60.5mm3/sec for 1k acceleration
|
||||
3. 121mm3/sec2 for 2k acceleration
|
||||
4. 242mm3/sec2 for 4k acceleration
|
||||
|
||||
**Below are some approximate ERS values for 0.42 line width and 0.20 layer height.**
|
||||
1. 38mm3/sec for 0.5k acceleration
|
||||
2. 76mm3/sec for 1k acceleration
|
||||
3. 150mm3/sec2 for 2k acceleration
|
||||
4. 300mm3/sec2 for 4k acceleration
|
||||
|
||||
**Below are some approximate ERS values for 0.45 line width and 0.16 layer height.**
|
||||
1. 32mm3/sec for 0.5k acceleration
|
||||
2. 65mm3/sec for 1k acceleration
|
||||
3. 129mm3/sec2 for 2k acceleration
|
||||
4. 260mm3/sec2 for 4k acceleration
|
||||
|
||||
**So, your tuning starting point needs to be an ERS value that is less than this.** A good point experiment with test prints would be **a value of 60-80%** of the above maximum values. This will give some meaningful assistance to pressure advance, reducing the deviation introduced by pressure advance smooth time. The greater the smooth time, the greater the quality benefit will be.
|
||||
|
||||
Therefore, for a **0.42 line width and 0.16 layer height**, the below are a recommended set of starting ERS values
|
||||
1. 18-25mm3/sec for 0.5k acceleration
|
||||
2. 35-50mm3/sec for 1k acceleration
|
||||
3. 70-100mm3/sec2 for 2k acceleration
|
||||
4. 145-200mm3/sec2 for 4k acceleration
|
||||
|
||||
If you are printing with a 0.2 layer height, you can increase these values by 25% and similarly reduce if printing with lower.
|
||||
|
||||
**The second factor is your extruder's mechanical abilities.** Direct drive extruders with a good grip on the filament typically are more responsive to extrusion rate changes. Similarly with stiff filaments. So, a Bowden printer or when printing softer material like TPU or soft PLAs like polyterra there is more opportunity for the extruder to slip or deviate from the desired extrusion amount due to mechanical grip or material deformation or just delay in propagating the pressure changes (in a Bowden setup).
|
||||
|
||||
**The final factor is the deviation introduced by pressure advance smooth time**, or equivalents in closed source firmware. The higher this value the larger the extrusion deviation from ideal. If you are using a direct drive extruder, reduce this value to 0.02 in your klipper firmware before tuning ERS, as a lower value results in lower deviations to mitigate. Then proceed to experimentaly tune ERS.
|
||||
|
||||
**So where does that leave us?**
|
||||
|
||||
Perform a test print with the above ERS settings as a starting point and adjust to your liking! If you notice budging on sharp overhangs where speed changes, like the hull of the benchy, reduce this value by 10% and try again.
|
||||
|
||||
If you're not noticing any artefacts, increase by 10%, but don’t go over the maximum values recommended above because then this feature would have no effect in your print.
|
||||
|
||||
<h2>A note for Bowden printers using marlin without pressure advance. </h2>
|
||||
If your printer is not equipped with pressure advance and, especially, if you are using a Bowden setup, you don’t have the benefit of pressure advance dynamically adjusting your flow.
|
||||
|
||||
|
||||
In this special case, ERS will be doing all the heavy lifting that pressure advance would typically perform. In this scenario a low value of 8-10mm3/sec is usually recommended, irrespective of your acceleration settings, to smooth out pressure changes in the extrusion system as much as possible without impacting print speed too much.
|
||||
|
||||
<h2>A note on ERS Segment length </h2>
|
||||
Ideally you want this value set to 1 to allow for the largest number of steps between each speed transition. However, this may result in a too large of a gcode, with too many commands sent to your MCU per second and it may not be able to keep up. It will also slow down the Orca slicer front end as the sliced model is more complex to render.
|
||||
|
||||
|
||||
For Klipper printers, a segment length of 1 works OK as the RPI or similar have enough computational power to handle the gcode command volume.
|
||||
|
||||
Similarly, for a Bambu lab printer, a segment length of 1 works well. **However, if you do notice your printer stuttering or stalling** (which may be the case with the lower powered P1 series printers) **or getting "Timer too close" errors** in Klipper, **increase this value to 2 or 3**. This would reduce the effectiveness of the setting but will present a more manageable load to your printer.
|
||||
|
||||
<h2>Limitations</h2>
|
||||
|
||||
**This feature can only work where speed changes are induced by the slicer** - for example when transitioning from fast to slow print moves when printing overhangs, bridges and from printing internal features to external features and vice versa.
|
||||
|
||||
However, it will not affect extruder behaviour when the printer is slowing down due to firmware commands - for example when turning around corners.
|
||||
|
||||
In this case, the printer slows down and then accelerates independently of what the slicer has requested. In this case, the slicer is commanding a consistent speed; however, the printer is adjusting this to operate within its printer kinematic limits (SCV/Jerk) and accelerations. As the slicer is not aware of this slow down, it cannot apply pre-emptive extrusion rate smoothing to the feature and instead, the changes are governed by the printer firmware exclusively.
|
||||
|
||||
<h2>Credits</h2>
|
||||
|
||||
**Original feature authors and creators:** The Prusa Slicer team, including [@bubnikv](https://github.com/bubnikv), [@hejllukas](https://github.com/hejllukas)
|
||||
|
||||
**Enhanced by:** [@MGunlogson](https://github.com/MGunlogson), introducing the feature to external perimeters, enhancing it by taking into account travel, retraction and implementing near-contiguous extrusions pressure equalizer adjustments.
|
||||
|
||||
**Ported to Orca:** [@igiannakas](https://github.com/igiannakas)
|
||||
|
||||
**Enhanced by:** [@noisyfox](https://github.com/Noisyfox), per object pressure equalization and fixing calculation logic bugs
|
||||
|
||||
**Wiki page:** [@igiannakas](https://github.com/igiannakas)
|
||||
|
||||
**Overall Orca owner and assurance:** [@softfever](https://github.com/SoftFever)
|
||||
|
||||
**Community testing and feedback:** [@HakunMatat4](https://github.com/HakunMatat4), [@psiberfunk](https://github.com/psiberfunk), [@u3dreal](https://github.com/u3dreal) and more
|
||||
|
||||
149
doc/Home.md
149
doc/Home.md
@@ -1,7 +1,146 @@
|
||||
Welcome to the OrcaSlicer WIKI!
|
||||
# Welcome to the OrcaSlicer WIKI!
|
||||
|
||||
We have divided it roughly into the following pages:
|
||||
Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer.
|
||||
|
||||
* [Calibration](wiki/Calibration)
|
||||
* [Print settings](wiki/Print-settings)
|
||||
* [How to build Orca Slicer](wiki/How-to-build)
|
||||
- [Printer Settings](#printer-settings)
|
||||
- [Material Settings](#material-settings)
|
||||
- [Prepare](#prepare)
|
||||
- [Process Settings](#process-settings)
|
||||
- [Quality Settings](#quality-settings)
|
||||
- [Strength Settings](#strength-settings)
|
||||
- [Speed Settings](#speed-settings)
|
||||
- [Support Settings](#support-settings)
|
||||
- [Multimaterial Settings](#multimaterial-settings)
|
||||
- [Others Settings](#others-settings)
|
||||
- [Calibrations](#calibrations)
|
||||
- [Developer Section](#developer-section)
|
||||
|
||||
> [!NOTE]
|
||||
> The Wiki is **Work In Progress** so bear with us while we get it up and running!
|
||||
> Please consider contributing to the wiki following the [How to contribute to the wiki](How-to-wiki) guide.
|
||||
|
||||
## Printer Settings
|
||||
|
||||

|
||||
|
||||
- [Air filtration/Exhaust fan handling](air-filtration)
|
||||
- [Auxiliary fan handling](Auxiliary-fan)
|
||||
- [Chamber temperature control](chamber-temperature)
|
||||
- [Adaptive Bed Mesh](adaptive-bed-mesh)
|
||||
- [Using different bed types in Orca](bed-types)
|
||||
|
||||
## Material Settings
|
||||
|
||||

|
||||
|
||||
- [Single Extruder Multimaterial](semm)
|
||||
- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient)
|
||||
|
||||
## Prepare
|
||||
|
||||
First steps to prepare your model/s for printing.
|
||||
|
||||
- [STL Transformation](stl-transformation)
|
||||
|
||||
## Process Settings
|
||||
|
||||

|
||||
|
||||
The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results.
|
||||
|
||||
### Quality Settings
|
||||
|
||||

|
||||
|
||||
-  [Layer Height Settings](quality_settings_layer_height)
|
||||
-  [Line Width Settings](quality_settings_line_width)
|
||||
-  [Seam Settings](quality_settings_seam)
|
||||
-  [Precision](quality_settings_precision)
|
||||
-  [Ironing](quality_settings_ironing)
|
||||
-  [Wall generator](quality_settings_wall_generator)
|
||||
-  [Walls and surfaces](quality_settings_wall_and_surfaces)
|
||||
-  [Bridging](quality_settings_bridging)
|
||||
-  [Overhangs](quality_settings_overhangs)
|
||||
|
||||
### Strength Settings
|
||||
|
||||

|
||||
|
||||
-  [Walls](strength_settings_walls)
|
||||
-  [Top and Bottom Shells](strength_settings_top_bottom_shells)
|
||||
-  [Infill](strength_settings_infill)
|
||||
-  [Template Metalanguage for infill rotation](strength_settings_infill_rotation_template_metalanguage)
|
||||
-  [Advanced](strength_settings_advanced)
|
||||
|
||||
### Speed Settings
|
||||
|
||||

|
||||
|
||||
-  [Initial Layer Speed](speed_settings_initial_layer_speed)
|
||||
-  [Other Layers Speed](speed_settings_other_layers_speed)
|
||||
-  [Overhang Speed](speed_settings_overhang_speed)
|
||||
-  [Travel Speed](speed_settings_travel)
|
||||
-  [Acceleration](speed_settings_acceleration)
|
||||
-  [Jerk (XY)](speed_settings_jerk_xy)
|
||||
-  [Advanced / Extrusion rate smoothing](speed_settings_advanced)
|
||||
|
||||
### Support Settings
|
||||
|
||||

|
||||
|
||||
-  [Support](support_settings_support)
|
||||
-  [Raft](support_settings_raft)
|
||||
-  [Support Filament](support_settings_filament)
|
||||
-  [Support Ironing](support_settings_ironing)
|
||||
-  [Advanced](support_settings_advanced)
|
||||
-  [Tree Supports](support_settings_tree)
|
||||
|
||||
### Multimaterial Settings
|
||||
|
||||

|
||||
|
||||
-  [Prime Tower](multimaterial_settings_prime_tower)
|
||||
-  [Filament for Features](multimaterial_settings_filament_for_features)
|
||||
-  [Ooze Prevention](multimaterial_settings_ooze_prevention)
|
||||
-  [Flush Options](multimaterial_settings_flush_options)
|
||||
-  [Advanced](multimaterial_settings_advanced)
|
||||
|
||||
### Others Settings
|
||||
|
||||

|
||||
|
||||
-  [Skirt](others_settings_skirt)
|
||||
-  [Brim](others_settings_brim)
|
||||
-  [Special Mode](others_settings_special_mode)
|
||||
-  [Fuzzy Skin](others_settings_fuzzy_skin)
|
||||
-  [G-Code Output](others_settings_g_code_output)
|
||||
-  [Post Processing Scripts](others_settings_post_processing_scripts)
|
||||
-  [Notes](others_settings_notes)
|
||||
|
||||
## Calibrations
|
||||
|
||||
The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution.
|
||||
|
||||
- [Temperature](temp-calib)
|
||||
- [Flow Rate](flow-rate-calib)
|
||||
- [Pressure Advance](pressure-advance-calib)
|
||||
- [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib)
|
||||
- [Retraction](retraction-calib)
|
||||
- [Tolerance](tolerance-calib)
|
||||
- Advanced:
|
||||
- [Volumetric Speed](volumetric-speed-calib)
|
||||
- [Cornering (Jerk & Junction Deviation)](cornering-calib)
|
||||
- [Input Shaping](input-shaping-calib)
|
||||
- [VFA](vfa-calib)
|
||||
|
||||
## Developer Section
|
||||
|
||||
This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless.
|
||||
|
||||
- [How to build Orca Slicer](How-to-build)
|
||||
- [Localization and translation guide](Localization_guide)
|
||||
- [How to create profiles](How-to-create-profiles)
|
||||
- [How to contribute to the wiki](How-to-wiki)
|
||||
- [Preset, PresetBundle and PresetCollection](Preset-and-bundle)
|
||||
- [Plater, Sidebar, Tab, ComboBox](plater-sidebar-tab-combobox)
|
||||
- [Slicing Call Hierarchy](slicing-hierarchy)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# How to compile
|
||||
- Windows 64-bit
|
||||
- Tools needed: Visual Studio 2019, Cmake, git, Strawberry Perl.
|
||||
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
|
||||
|
||||
- Mac 64-bit
|
||||
- Tools needed: Xcode, Cmake, git, gettext
|
||||
- run `build_release_macos.sh`
|
||||
|
||||
- Ubuntu
|
||||
- run `BuildLinux.sh -udisr`
|
||||
@@ -1,104 +0,0 @@
|
||||
# Localization and translation guide
|
||||
|
||||
The purpose of this guide is to describe how to contribute to the Orca Slicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations.
|
||||
|
||||
Those can be downloaded here:
|
||||
- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog.
|
||||
- https://poedit.net PoEdit provides good interface for the translators.
|
||||
|
||||
After GNUgettext is installed, it is recommended to add the path to gettext/bin to PATH variable.
|
||||
|
||||
Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext/manual/gettext.html
|
||||
|
||||
|
||||
### Scenario 1. How do I add a translation or fix an existing translation
|
||||
1. Get PO-file 'OrcaSlicer_xx.pot' from corresponding sub-folder here:
|
||||
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
|
||||
2. Open this file in PoEdit as "Edit a translation"
|
||||
3. Apply your corrections to the translation
|
||||
4. Push changed OrcaSlicer_xx.po into the original folder
|
||||
5. copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
|
||||
|
||||
### Scenario 2. How do I add a new language support
|
||||
1. Get file OrcaSlicer.pot here :
|
||||
https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
|
||||
2. Open it in PoEdit for "Create new translation"
|
||||
3. Select Translation Language (for example French).
|
||||
4. As a result you will have fr.po - the file containing translation to French.
|
||||
Notice. When the translation is complete you need to:
|
||||
- Rename the file to OrcaSlicer_fr.po
|
||||
- Click "Save file" button. OrcaSlicer_fr.mo will be created immediately
|
||||
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n, and be pushed
|
||||
- copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
|
||||
( name of folder "fr" means "French" - the translation language).
|
||||
|
||||
### Scenario 3. How do I add a new text resource when implementing a feature to Orca Slicer
|
||||
Each string resource in Orca Slicer available for translation needs to be explicitly marked using L() macro like this:
|
||||
```C++
|
||||
auto msg = L("This message to be localized")
|
||||
```
|
||||
To get translated text use one of needed macro/function (`_(s)` or `_CHB(s)` ).
|
||||
If you add new file resource, add it to the list of files containing macro `L()`
|
||||
|
||||
### Scenario 4. How do I use GNUgettext to localize my own application taking Orca Slicer as an example
|
||||
|
||||
1. For convenience create a list of files with this macro `L(s)`. We have
|
||||
https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt.
|
||||
|
||||
2. Create template file(*.POT) with GNUgettext command:
|
||||
```
|
||||
xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
|
||||
```
|
||||
|
||||
Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding
|
||||
Use flag `--debug` to correctly extract formatted strings(used %d, %s etc.)
|
||||
|
||||
3. Create PO- and MO-files for your project as described above.
|
||||
|
||||
4. To merge old PO-file with strings from created new POT-file use command:
|
||||
```
|
||||
msgmerge -N -o new.po old.po new.pot
|
||||
```
|
||||
Use option `-N` to not using fuzzy matching when an exact match is not found.
|
||||
|
||||
5. To concatenate old PO-file with strings from new PO-file use command:
|
||||
```
|
||||
msgcat -o new.po old.po
|
||||
```
|
||||
|
||||
6. Create an English translation catalog with command:
|
||||
```
|
||||
msgen -o new.po old.po
|
||||
```
|
||||
Notice, in this Catalog it will be totally same strings for initial text and translated.
|
||||
|
||||
When you have Catalog to translation open POT or PO file in PoEdit and start translating.
|
||||
|
||||
|
||||
## General guidelines for Orca Slicer translators
|
||||
|
||||
|
||||
- We recommend using *PoEdit* application for translation (as described above). It will help you eliminate most punctuation errors and will show you strings with "random" translations (if the fuzzy parameter was used).
|
||||
|
||||
- To check how the translated text looks on the UI elements, test it :) If you use *PoEdit*, all you need to do is save the file. At this point, a MO file will be created. Rename it Orca Slicer.mo, and you can run Orca Slicer (see above).
|
||||
|
||||
- If you see an encoding error (garbage characters instead of Unicode) somewhere in Orca Slicer, report it. It is likely not a problem of your translation, but a bug in the software.
|
||||
|
||||
- See on which UI elements the translated phrase will be used. Especially if it's a button, it is very important to decide on the translation and not write alternative translations in parentheses, as this will significantly increase the width of the button, which is sometimes highly undesirable:
|
||||
|
||||

|
||||
|
||||
- If you decide to use autocorrect or any batch processing tool, the output requires very careful proofreading. It is very easy to make it do changes that break things big time.
|
||||
|
||||
- **Any formatting parts of the phrases must remain unchanged.** For example, you should not change `%1%` to `%1 %`, you should not change `%%` to `%` (for percent sign) and similar. This will lead to application crashes.
|
||||
|
||||
- Please pay attention to spaces, line breaks (\n) and punctuation marks. **Don't add extra line breaks.** This is especially important for parameter names.
|
||||
|
||||
- Description of the parameters should not contain units of measurement. For example, "Enable fan if layer print time is less than ~~n seconds~~"
|
||||
|
||||
- For units of measurement, use the international system of units. Use "s" instead of "sec".
|
||||
|
||||
- If the phrase doesn't have a dot at the end, don't add it. And if it does, then don't forget to :)
|
||||
|
||||
- It is useful to stick to the same terminology in the application (especially with basic terms such as "filament" and similar). Stay consistent. Otherwise it will confuse users.
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
The 'Precise Wall' is a distinctive feature introduced by OrcaSlicer, aimed at improving the dimensional accuracy of prints and minimizing layer inconsistencies by slightly increasing the spacing between the outer wall and the inner wall.
|
||||
|
||||
Below is a technical explanation of how this feature works.
|
||||
First, it's important to understand some basic concepts like flow, extrusion width, and space. Slic3r has an excellent document that covers these topics in detail. You can refer to this article: [link to article](https://manual.slic3r.org/advanced/flow-math).
|
||||
|
||||
Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping.
|
||||

|
||||
This approach enhances the strength of 3D-printed parts. However, it does have some side effects. For instance, when the inner-outer wall order is used, the outer wall can be pushed outside, leading to potential size inaccuracy and more layer inconsistency.
|
||||
|
||||
It's important to keep in mind that this approach to handling flow is specific to Slic3r and it's forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura
|
||||
|
||||
OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
Print settings:
|
||||
|
||||
* [Seam](seam)
|
||||
* [Axiliary fan](auxiliary-fan)
|
||||
* [Chamber temperature](chamber-temperature)
|
||||
* [Air filtration/Exhaust fan](air-filtration)
|
||||
* [Single Extruder Multimaterial](semm)
|
||||
* [Precise wall](Precise-wall)
|
||||
20
doc/Seam.md
20
doc/Seam.md
@@ -1,20 +0,0 @@
|
||||
WIP...
|
||||
|
||||
### Scarf joint seam
|
||||
WIP...
|
||||
|
||||
### Seam gap
|
||||

|
||||
|
||||
### Role-based wipe speed(auto)
|
||||
### Wipe speed
|
||||
### Wipe on loop(inward movement)
|
||||

|
||||
|
||||
Use outer wall speed and acceleration instead of travel speed and acceleration.
|
||||
Added an option to disable this feature
|
||||
### Support Cura style outer wall wipe(100% retract before wipe)
|
||||

|
||||

|
||||
|
||||
Extra length on restart
|
||||
@@ -1,43 +0,0 @@
|
||||
# Adaptive Bed Mesh Support
|
||||
Orca Slicer introduces comprehensive support for adaptive bed meshing across a variety of firmware, including Marlin, Klipper, and RepRapFirmware (RRF).
|
||||
This feature allows users to seamlessly integrate adaptive bed mesh commands within the Machine Start G-code.
|
||||
The implementation is designed to be straightforward, requiring no additional plugins or alterations to firmware settings, thereby enhancing user experience and print quality directly from Orca Slicer.
|
||||
|
||||
|
||||

|
||||
|
||||
## Settings in Orca Slicer:
|
||||
`Bed mesh min`: This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed.
|
||||
|
||||
`Bed mesh max`: This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (99999, 99999), which means there are no limits, thus allowing probing across the entire bed.
|
||||
|
||||
`Probe point distance`: This option sets the preferred distance between probe points (grid size) for the X and Y directions, with the default being 50mm for both X and Y.
|
||||
|
||||
`Mesh margin`: This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions. Note for Klipper users: Orca Slicer will adjust adaptive bed mesh area according to the margin. It is recommended to set the margin to 0 in Klipper config or pass 0 when calling BED_MESH_CALIBRATE command(please refer to the example below).
|
||||
|
||||
## Available g-code variables for Adaptive Bed Mesh Command
|
||||
`bed_mesh_probe_count`: Represents the probe count in the X and Y directions. This value is calculated based on the size of the adaptive bed mesh area and the distance between probe points.
|
||||
|
||||
`adaptive_bed_mesh_min`: Specifies the minimum coordinates of the adaptive bed mesh area, defining the starting point of the mesh.
|
||||
|
||||
`adaptive_bed_mesh_max`: Determines the maximum coordinates of the adaptive bed mesh area, indicating the endpoint of the mesh.
|
||||
|
||||
`ALGORITHM`: Identifies the algorithm used for adaptive bed mesh interpolation. This variable is useful for Klipper users. If bed_mesh_probe_count is less than 4, the algorithm is set to `lagrange`. Otherwise, it is set to `bicubic`.
|
||||
|
||||
## Example of Adaptive Bed Mesh usage in Orca Slicer:
|
||||
|
||||
### Marlin:
|
||||
```
|
||||
; Marlin don't support speicify the probe count yet, so we only specify the probe area
|
||||
G29 L{adaptive_bed_mesh_min[0]} R{adaptive_bed_mesh_max[0]} F{adaptive_bed_mesh_min[1]} B{adaptive_bed_mesh_max[1]} T V4
|
||||
```
|
||||
### Klipper:
|
||||
```
|
||||
; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally
|
||||
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=1 ADAPTIVE_MARGIN=0
|
||||
```
|
||||
### RRF:
|
||||
```
|
||||
M557 X{adaptive_bed_mesh_min[0]}:{adaptive_bed_mesh_max[0]} Y{adaptive_bed_mesh_min[1]}:{adaptive_bed_mesh_max[1]} P{bed_mesh_probe_count[0]}:{bed_mesh_probe_count[1]}
|
||||
```
|
||||

|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user