-Makes it easy to extend tinkerbell with new systems & widgets.
-TBImageWidget loads & shows images dynamically (so it's easy to show
images that are rarely showed and should not be part of the skin).
-TBBitmapFragments can be removed individually. Free space is maintained by new TBSpaceAllocator class.
-The glyph cache is now a real cache (forgets least recently used glyph)
-Changes to batcher to handle flushing properly when removing fragments.
-Changes to batcher to wait with validating fragments bitmap until drawing, to avoid flush after each character when the glyph cache is full.
Converting to int and back to TBID works, but debug builds may
start asserting because there are TBIDs with and without string
that gets the same hash value (which is not exactly a collision but
could be). Alternatively, the assert can be made quite about that case.
Was introduced by recent optimization to skip layout when the size
hasn't been set yet. In combination with other optimization to skip
relayout of text if size doesn't affect layout.
Need to handle context lost & restored in more places than the
skin (in fonts), so the new listener API should be invoked by the
platform instead of just reloading the skin directly.
-Added TBFontRenderer & TBFontFace etc. with glyph caching using
TBBitmapFragment.
-Removed hardcoded window title bar height.
-Lots of work to get TBFontFace & TBFontDescription into use in widgets.
-Replaced old TdFont with a new bitmap font system using a TBFontRenderer
backend. Supports characters in any range, glow and shadow.
-Added utf-8 conversion functions.
-Switched to utf-8 in clipboard implementation (windows)
-Switched to utf-8 on all resource files.
-Skip BOM character at the beginning of resource files.
-Made old TDFont system unicode aware (not supporting displaying unicode, but able to handle it)
-Undo redo must avoid caret snap, or everything goes out of sync.
-Merge wasn't always called on needed blocks, and didn't propagate height change properly.