Just trying to imagine the possibilities.
At the moment i'm dusting off some old code of mine that processes icons (it is like a very raw information tool: determine/display iconformat, tooltypes etc) without using the OS API.
Although i can imagine the possibilities ... at the moment i'm more interested in knowing how (if any) you approached icons that do not play nice and don't exactly follow the rules. E.g. in case you are talking to your icon and it responds with:
- hello user i have a newdrawerdata structure attached... fooled you as it is not there !
- Oh you though that additional data after classic storage was meant to be interpreted as a glowicon: fooled ya again !
- Do you really think that when there is some diskmagic and some fields that act like an icon that i am really an icon ? I just stopped being a classic icon after do_Pad , fooled ya again !
- So you like my sexy newicon outfit ? Which one will you favour ...me or my brother that hides itself in glowicon.
- I don't like storing my tooltypes strings in a proper way, I'll just stop somewhere in the middle. And don't you dare respect my tooltype count either.
Most things can be "caught" but i wondered if you had given these kind of things any thought and if so how your code approaches such things (if any).
At the moment my code does a byte count check before reading the actual data to make sure the bytes are actually present. Also some other sanity checks are in place but sometimes the checks are grasping at straws.
Also, I'm still trying to come up with a decent strategy with regards to newicons as in which one to favour (if any).