Ryan A. Pavlik
e386d405d6
Make some arguments const/const references, where possible. NFC.
...
Found and suggested by clang-tidy.May help performance by reducing copies,
depending on frequency of call, etc.
2019-11-23 14:07:31 +00:00
whitequark
65d0bdffdb
Split Canvas::FinishFrame out of Canvas::FlushFrame.
...
When drawing the graphics window, we flush it twice: once to draw
the geometry, and another time to draw the UI overlay (toolbar,
selection marquee, and FPS counter). Calling glFinish() each time
is (on most platforms) just pointlessly slow, but on macOS Catalina,
without offscreen rendering, it causes the toolbar to flicker.
Instead of calling glFinish() twice per frame in that case, call
glFlush() twice and then glFinish() once we really are done.
2019-11-23 13:35:16 +00:00
ruevs
ec3056773e
Simplify UNION and DIFFERENCE boolean operations.
...
Union and difference are optimized by replacing the expression
(!inShell && !inFace)
which is equivqlent to
(!inShell && !inSame && !inOpp)
with
outSide
which is equivalent, since SShell::Class::OUTSIDE is the only remaining possibility.
2019-11-23 13:22:15 +00:00
Koen Schmeets
b5ccf5acf5
macOS: fix CMake Xcode generator.
...
This is done by setting `CMAKE_RUNTIME_OUTPUT_DIRECTORY` to `$<1:${CMAKE_BINARY_DIR}/bin>`
2019-11-23 13:20:45 +00:00
Koen Schmeets
0dcc8f3369
Fix Xcode auto-fixable issues
2019-11-23 13:08:22 +00:00
whitequark
74aa80b645
Fix misuse of glTexImage2D.
...
Per the OpenGL documentation:
> GL_INVALID_VALUE may be generated if level is greater than
> log2(max), where max is the returned value of GL_MAX_TEXTURE_SIZE.
Although we always passed `log2(max) + 1` as `level`, for some reason
none of the GL implementations we run on ever returned an error.
It also appears there is a bug in ANGLE that crashes the process
instead in this case if the C++ runtime performs bound checks on
vector::operator[]=.
2019-11-22 02:11:10 +00:00
phkahler
5d78f993ce
Make helix origin create a line even if it's in a different group.
...
Helix should always make a line for the axis.
2019-09-20 01:09:58 +00:00
phkahler
162897eca7
Reimplement DivPivoting as DivProjected.
...
The old implementation was an approximation, whereas the new one is exact.
2019-09-20 01:09:25 +00:00
EvilSpirit
7f9117b2bf
Calculate area of selected faces, if any.
2019-09-11 10:38:10 +00:00
EvilSpirit
915f55aabc
Show volume of current group alongside total volume.
2019-09-11 10:38:10 +00:00
Ryan Pavlik
a0e992374d
Clean up virtual, override, default, and void params. NFC.
...
Found by clang-tidy.
2019-09-11 10:31:07 +00:00
Ryan Pavlik
ae417fc14c
Use emplace_back. NFC.
...
Found by clang-tidy.
2019-09-11 10:31:07 +00:00
Ryan Pavlik
34dccbf935
Don't call static methods through an instance. NFC.
...
Found by clang-tidy.
2019-09-11 10:31:07 +00:00
Maximilian Federle
219df31c53
Linux: add support for building snap packages.
2019-09-11 10:12:53 +00:00
Ryan Pavlik
b1e280e75f
Fix undefined behavior in IdList::end().
2019-09-11 09:44:30 +00:00
Ryan Pavlik
ec13839c92
Modify clang-format config to avoid single-line things. NFC.
2019-09-11 09:43:03 +00:00
Ryan Pavlik
bedea1ef3c
Avoid undefined behavior from out-of-range access. NFC.
2019-09-10 06:44:34 +00:00
Ryan Pavlik
b8ee0e941b
Remove extraneous semicolon. NFC.
2019-09-10 06:44:34 +00:00
Ryan Pavlik
78819ffca3
Fix "virtual function without virtual destructor" warning. NFC.
2019-09-10 06:44:34 +00:00
Ryan Pavlik
c959af1149
Fix a comment. NFC.
...
Found by clang-tidy.
2019-09-10 06:44:34 +00:00
Ryan Pavlik
3e566d7e67
Remove std::move from trivially-copyable types. NFC.
...
Found by clang-tidy
2019-09-10 06:44:34 +00:00
Ryan Pavlik
c0904e2ba8
Use IsEmpty() or .empty() to check if a container is empty. NFC.
...
Most found by clang-tidy.
2019-09-10 04:22:21 +00:00
Ryan Pavlik
61c0167ad7
Fix TTF iteration in case of an empty list.
2019-09-10 04:22:07 +00:00
Ryan Pavlik
15838dc5a1
For loop cleanup. NFC.
2019-09-10 04:21:57 +00:00
Ryan Pavlik
231dff6cd9
Add and use List::Last(). NFC.
2019-09-10 04:20:38 +00:00
whitequark
c5f3cd151a
Use the same @todo hot comment style everywhere.
2019-09-10 04:07:42 +00:00
Ryan Pavlik
d514a26f92
Fix use-after-free in revolve and helix.
...
Pointers get invalidated if a list has to be re-allocated.
CopyEntity can do that.
2019-09-10 04:07:42 +00:00
Ryan A. Pavlik
a4c0022815
Fix a warning about a virtual destructor.
2019-09-10 03:33:05 +00:00
Ryan A. Pavlik
43b2261e9c
CLI/testsuite: do not crash if a dialog is displayed.
2019-09-10 03:23:31 +00:00
phkahler
22e4011cb6
use std::vector in helix operations instead of fixed length array. Remove limit on number of sections. Delete definition of Revolved struct.
2019-08-25 14:30:37 +00:00
phkahler
e22c522c81
use std::vector in lathe operations instead of fixed length array
2019-08-25 14:30:37 +00:00
phkahler
2dd50d0f3a
Only allow lathe, revolve and helix for 2d sketches.
2019-08-25 14:30:37 +00:00
Ryan Pavlik
13820bf27d
Revert "IdList::RemoveTagged switch to std::remove_if from iteration. NFC."
...
This reverts commit 0bb6a348e3
.
2019-08-20 23:28:43 +00:00
Ryan Pavlik
b284e80785
Improve NextAfter. NFC.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
533ca618eb
Fix a manual manipulation of List::n. NFC.
...
This broke encapsulation and thus caused problems for any deeper changes
to List.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
dd738dd1fc
Add Last(). NFC.
...
Counterpart of First(). standard library calls this "back()".
2019-08-20 15:57:11 +00:00
Ryan Pavlik
610e35f6dd
Improve Clear(). NFC.
...
Was getting segfaults near here with another patch since removed from the branch.
Moving these assignments after the memfree means they still have
useful data when debugging a crash in memfree.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
b9d035c805
Improve MoveSelfInto. NFC.
...
std::swap is an idiomatic way to do a move.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
9fd09ddd8a
Add IdList::AllocForOneMore() based on List. NFC.
...
Also modifies a sizeof call.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
0bfbbe2bf3
Improve implementation hiding in IdList/List. NFC.
...
Allows distancing users from the internal "elem" member.
Add Get() and operator[].
Replace direct references to elem.
Make elem and elemsAllocated private in IdList/List.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
482f0e8de9
Replace qsort with std::sort and lambda. NFC.
...
Removes static variable usage, permits hiding of the underlying pointer
(std::sort uses iterators intead), type safety, etc.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
1b97a006e9
Add and use List<T>::IsEmpty, range-for, etc. NFC.
...
Changes resemble those already made to IdList.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
0bb6a348e3
IdList::RemoveTagged switch to std::remove_if from iteration. NFC.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
3ea077b70f
Reduce scopes and placate clang-tidy. NFC.
...
Pointing out one potential issue with an assert.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
60fdac141d
Simplify IdList::Add(). NFC.
...
Offloads most of the work onto standard algorithms to make it
more self-evidently correct.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
3340392bf0
Add and use LowerBound methods in IdList. NFC.
...
Clearer and less error-prone to use standard-supplied algorithms.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
0c941aedb1
Revise IdList::Tag to reduce code duplication. NFC.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
5ada4dbd9c
Add and use IdList::IsEmpty. NFC.
...
Removes consuming code from the implementation details, easing swap of
the underlying container, etc.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
b5f36a4f01
Provide cbegin(), cend() in containers. NFC.
...
Allows forcing const iteration.
2019-08-20 15:57:11 +00:00
Ryan Pavlik
86f20cc7e5
Convert many loops to range-for or std algorithms. NFC.
...
Also add comments about indexing and when we don't use range-for.
2019-08-20 15:57:11 +00:00