Wild's Wishlist for the Addon API

I know there is an official thread for these things, but I figured it might be nice to discuss some of the improvements I'd like to see separately, to see what other addon authors think without cluttering up the official thread.

This wishlist is based on things I've hit while working on Gadgets, so it's very specific to my own selfish needs

Option to hide a secure frame if it's mouseover unit is not available

This is by far the piece of functionality I'd like to see the most. Every unit frame addon is struggling to work around the secure frame limitations, and this seems like a simple and elegant solution to the problem without enabling automation.

Outlined Fonts

The RIFT client outlines fonts in black whenever it overlays an image or the world, but we have no sensible way to achieve this within an addon. The closest we can get is underlaying text with black copies to form shadows, but this adds at least one other text frame to the stack for every piece of text we display, and it's still not as clear as a proper outline.

Detect SHIFT/ALT/CTRL Key Presses

Possibly fairly specific to my addon, but KeyDown/KeyUp events call the event with an empty string when shift/ctrl/alt are pressed. I'd like to be able to detect if shift is pressed when resizing a frame to enable 'maintain aspect ratio' functionality.

List available image files in a Directory

It would be nice to let people to drop image files into a directory and have an addon find them there, without having to have Lua code tell the addon that it exists. If there are security implications, then a restricted solution that will only list image files in /resources/ within an addon would be good. Basically, the ability to provide a user with a list of textures to choose from a directory.

Frame Deletion

The ability to delete frames that are no longer required would be useful. Something like UI.Frame: Delete() that completely deletes the frame and all of it's children would save a lot of messing around trying to reuse frames.

Image Tinting

The only way to tint textures at the moment (that I am aware of) is either to set their background colour and have this show through using an alpha channel, or to overlay the texture with a coloured frame. Both of these solutions require a rectangular texture. If we could use basic additive colour blending to tint a texture, we could colorize any texture of any shape. Even better would be if we could specify the colour for each vertex of the frame and have it interpolate across the frame, but this is more of a nice to have.

UV Coordinates

Similar to the tinting point, UV coordinates are a simple and fundamental aspect for textures. My sprite maps have to use masks to show the correct part of the image, which means yet another layered frame. If we could specify the UV coordinates for each corner of the frame, we could do some really fancy effects as well as having more efficient sprite maps.

Shared Textures

I believe that every instance of a Texture frame loads a new copy of the image file. For Gadgets, as well as certain other addons, this is almost certainly a huge efficiency hit. If the API could detect that it has already loaded a texture file and share the texture between all instances, I think there would be large efficiency gains (I could use fewer sprite maps in my addon as well).

Link Dead Players

I think we're missing a status that is available to the native client when someone goes link dead. You can tell from the native frames that someone has DC'd a lot earlier than we get the offline flag set on a unit.

Raid Leader/Assistant Flags

It would be nice to be able to tell if groupNN is a raid leader, raid assistant, master looter, etc. As well as displaying the 'crown' icon for a group leader's unit frame, I would like to be able to restrict some addon functionality to raid leaders only.

There's a lot more I'd like to see of course, but this is already in TL;DR; territory