/* * Fancy string - immediate mode renderer for colored strings */ // TOP #if !defined(FCODER_FANCY_H) #define FCODER_FANCY_H /* TODO(casey): This warrants a lot of thought. Since you want to be able to edit colors after they have already been stored away in internal structures, you want to capture as much as possible where the colors came from. In the current set-up, you can blend any two ids, but that's it. If you go beyond that, it collapses down to just RGBA. Maybe there should be more than that. It's hard to say. I don't know. */ struct Fancy_Color{ union{ struct{ id_color index_a; id_color index_b; }; u32 rgba; }; union{ struct{ u8 table_a; u8 table_b; u8 c_a; u8 c_b; }; u32 code; }; }; struct Fancy_String{ Fancy_String *next; String value; Face_ID font_id; Fancy_Color fore; Fancy_Color back; f32 pre_margin; f32 post_margin; }; struct Fancy_String_List{ Fancy_String *first; Fancy_String *last; }; #endif // BOTTOM