Add envelope base code with curve area and axis position calculation.
Make sure the envelope curve area overlaps with the axes.
Add padding support to the envelope canvas.
Draw envelope axes.
Add first bits of code for rendering envelope axis markers.
Make envelope axis marker filler independent of the axis.
Draw envelope markers along the x axis.
Draw envelope axis markers sparsely with very limited space.
Cache envelope axes.
Add numbers to envelope axes.
Fine-tune envelope axis numbers.
Share common marker and number drawing code with x and y axes of envelopes.
Draw linear envelope curves.
Clean up unused line segments from envelope cache.
Use antialiasing with envelope curves.
Draw envelope nodes.
Highlight focused envelope nodes, add mapper function from widget to envelope coordinates.
Disable test rectangle drawing.
Fix incorrect drawing positions in envelopes.
Make the envelope area square if the ranges match in length.