I've tested this in a modified Noire - I know the menus overlap the buttons at 200% (normal Noire modded to show only Mac buttons does this too!), which seems to be a bug if you force the Mac skin on Windows (maybe Mac too?).
The OSX version doesn't have a menu there, as the menu moves to the main OSX menu bar at the top of the screen, so thats fine.
200% looks good, but at 100% the images look blurry (especially maximize/restore, perhaps due to downsampling?) compared to how they normally look within Windows. Shame I can't specify different images for specific sizes (e.g. 100% and 200%).
Maybe I'll add that as well while I am at it, but the possible choices is getting quite complex, which makes me think I should add a new sub-element, as parsing a long list of top-level <Entry> elements with different conditions is going to get complicated in the code.
Platform alone was easy, since there are no alternatives, ie. its a simple true/false check, but if I add PlatformVersion and some kind of Scale-dependent condition, thats not so straight forward.
So, something like this (names not final)
<EntryGroup Name="CloseButton">
<ConditionalEntry Platform="Windows" PlatformVersion="6.2-6.3" Scale="1" Bitmap="Close-Win8-100.png" NumberImages="5" Alignment="2" OffsetX="42" OffsetY="2" />
<ConditionalEntry Platform="Windows" PlatformVersion="6.2-6.3" Scale="2" Bitmap="Close-Win8-200.png" NumberImages="5" Alignment="2" OffsetX="42" OffsetY="2" />
<ConditionalEntry Platform="Windows" PlatformVersion="10.0" Scale="1" Bitmap="Close-Win10-100.png" NumberImages="5" Alignment="2" OffsetX="42" OffsetY="2" />
<ConditionalEntry Platform="Windows" PlatformVersion="10.0" Scale="2" Bitmap="Close-Win10-200.png" NumberImages="5" Alignment="2" OffsetX="42" OffsetY="2" />
</EntryGroup>
This makes parsing and handling this easier, since I can just parse all elements inside the EntryGroup, evaluate their conditions, and then decide which of the entries to actually use for the style.
Especially for Scale this is important, since scale might be 1.5, and no perfect match exists - and I need to decide which of the images to use only after I know which options do exist.
Another question on that, should it just decide based on the existing "Scale" value, which doubles as the image scale for rendering, or should there be an explicit new option for the conditional behavior?
Using the existing Scale makes it a bit simpler, but it limits the flexibility a bit, since these things are directly tied together. But on the other hand, are you ever going to use ScaleCondition=1 with Scale!=1? Does that even make sense? Why not pre-scale all your assets perfectly?
On that topic, anyone want to express an opinion on how to select an image based on scale? What do I use for 1.5 scale in this example? Avoid upscaling, if possible?
I'm open to suggestions on how you feel the syntax might be best for this.