How skins are rendered
- A skin is a collection of viewports. Each viewport has a set of lines, each line a set of sublines (With different timeout values), each subline has a set of tokens which are finnaly rendered.
- The first viewport (the "default" one) is sized to the full screen (or the UI viewport set by the Base Skin if the theme isnt disabled)
- If no backdrop is specified (or forced off) a default backdrop is used
The current renderer works like follows:
- On a full update, the default viewport is cleared unless we are in the sbs, all lines are reset to the first subline, timeouts cleared.
- Mark all conditionally hidden viewports to be hidden
- For each viewport:
- Set all images to not be displayed
- If it was hidden and is now visible, clear the viewport
- For each line in the viewport (That has the correct update flag, or had its subline changed, OR ALWAYS IF THE VIEWPORT IS ALWAYS HIDDEN)
- Find the current subline
- Handle (but DO NOT draw) each individual tag (Some tags to do drawing now - Ideally all tags should be drawn now though)
- If a conditional is hit:
- Get the current value for the conditional.
- If the value is hiegher than the amount of options, use the last one
- Go over all tags in the conditional, Handle tags which need handling in a false case (i.e clear image areas)
- Handle the selected conditional
- Draw the peak meters (LCD_BITMAP) or the progressbar (LCD_CHARCELL)
- If there is more than one viwport and we are NOT in the default viewport in the sbs, OR only one viewport, put the text from the HANDLE step onto the lcd
- draw the progressbars if this viewport has any
- draw each enabled (sub)image in this viewport
FS#11133 changes this the progressbar and image drawing to be drawn in the "Handle tag" step instead of at the end.
Apparently I was confused... the default viewport is handled like a normal viewport EXCEPT in the SBS... I'm not such a hige fan of this, the problem being that special handling always sucks!. This needs to happen because otherwise the default viewport will clear the UI viewport (i.e the list) when we are drawing the sbs
Copyright © by the contributing authors.