and for separation of concerns:
The final G-code preview no more uses ExtrusionPaths structure
to hold the G-code path data extracted by parsing the G-code.
Instead, the ExtrusionPath class has been trimmed down back to
the original size before the G-code preview was introduced,
and a new GCodePreviewData::Extrusion::Path class was created to hold
the additional path data as the extruder ID, color change ID
and fan speed.
Two bugs were fixed:
1) An entry in the GLVolume index was not always created when it should
have been.
2) Removing empty volumes from the list of GLVolumes did not update
the GLVolume index. This is an old issue, but it likely surfaced
now with the introduction of splitting the large GLVolumes
into multiple shorter ones.
as _set_current() tested for visibility of the window on the screen.
Improved memory management by:
1) Allocating small (around 3MB) vertex buffers to be sent to the GPU.
2) Passing the small vertex buffers to the GPU as quickly as possible.
A bit of copy / paste refactoring into common functions.
For an unknown reason, if the scrolling is performed on Windows
with the two finger gesture on touch pad, there is no Idle event
generated on some computers.
The Idle is not generated on Vojtech's laptop, it is generated
on Enrico's laptop.
evt.Skip() solves the issue on Vojtech's laptop.
including the alpha channels, which have their 3 lowest bits set to zero.
In case some blending occurs, the lowest 3 bits will likely be used
to interpolate between the false colors, therefore the 3 lowest bits
may be used to detect alpha blending or multi-sampling.
for the GLVolumes before sending to the GPU driver. The following commits
were partially reverted:
4269c8b23c Removed GLVolume non-VBO rendering
d15698e21e GLVolume and GLIndexedVertexArray refactored to send data to gpu at the first render call
Namely, the GLVolume buffers are "shrink to size"'d before sending their
content to the OpenGL driver, and the vertex buffers are populated
as quickly as possible from the GLVolume, so that the same buffer is not
kept twice in RAM on systems, where the RAM is shared with the graphics
card.
Also the memory allocation reporting was improved for the GLVolumes.