maptext outlines are getting cut when on vis_contents of atoms with the KEEP_TOGETHER appearance_flag.
Numbered Steps to Reproduce Problem:
1 - Put a long text in a maptext with outline
2 - Put the atom with the maptext inside the vis_contents of an atom with the KEEP_TOGETHER appearance_flag.
3 - See the outline getting cut at the border
Code Snippet (if applicable) to Reproduce Problem:
test case sent
Expected Results:
Outline doesn't get cut
Actual Results:
Outline gets cut
Does the problem occur:
Every time? Or how often? Yes
In other games? Yes
In other user accounts? Yes
On other computers? Yes
When does the problem NOT occur? Never
Workarounds: use KEEP_APART on the atom that has the maptext
In the current code, the pre-render calculates the size of the temporary surface that will be required for KEEP_TOGETHER rendering. However, because maptext can contain outlines and shadows applied by CSS, maptext can grow beyond its expected bounds at the time of render. (Parsing the maptext CSS does not happen in the pre-render.)
There are two possible approaches that may work.
1) Keep a hashtable of known maptext in the pre-render, and what filters it might have, so it's known how much the maptext may need to expand to handle filter effects.
2) Have RenderAtomGroup() in the renderer loop through its children twice: once to grab their bounds, once to draw them after it's calculated the total bounds it will need.
#2 is probably the most robust option. This will mean additional work in the render stage, but it may completely obviate work currently done in the pre-render so it could be a wash.