aligned by default; we add the value of GetLineWidthInSourcePixels to right-
align (and n/2 to center-align). This causes left-alignment to be flush, with
overdraw over the alignment (correct), but right-alignment to align against
the overdraw. This causes fonts with borders to align with the border over
the edge on the left and against the edge on the right.
If we only include overdraw for cropping and scaling, and not positioning, then
we're inconsistent. For example, if we have a border with 100 pixels of space,
and we scale to 100 pixels in this way, the text will be scaled to exactly 100
pixels, but if left- or right-aligned against the border, will overlap the border
and not actually use the whole space. We need to be consistent: either consider
the overdraw part of the character or don't.
Ultimately, the overdraw was intended to not be considered part of the character
itself. It's intended for use with fonts with borders/strokes/glow around lettering.
That causes every character in a font to be widened, usually uniformly. This
tends to not increase the subjective width of the character: if aligning hard
against a border, these features should be ignored. So, let's go back to the
original intent, and don't consider overdraw part of the character.
common case. Normally, most songs in most courses are static. Previously,
in those cases, the filtered song list would never be generated; now it's
generated for every course. Optimize the filtering (erase() on a vector is
slow).
Remove m_bgOptionsOut, m_bgNoOptionsOut; these were only used for delays, which
we can do by sleeping on the options message commands. Remove SM_TweenOffOptionsMessage;
treat that as part of FadingOut.
spent in this code in release, but in debug this brings the time spent building
musicwheel items in ALL_COURSES sort mode from 30 seconds with my 1600+
songs in about 80 groups down to 12 seconds. Release is down to 6 seconds,
but I don't know where it was to start. This time would increase nearly
exponentially with the number of songs and groups.