Code:
Objects:
Theme {
Name: Str,
Desc: Str,
i18n: File,
Theme_Details,
}
Theme_Details
{
Borders:{
Radius: (optional) int,
Top: color|gradient|texture,
Right: (...),
Bottom: (...),
Left: (...)
},
Buttons:{
(same as Borders)
},
Menus: {
(same as Borders)
},
Ticks: {
(same as Borders),
Mark: character|texture|img
},
Radios: {
(same as Borders),
Mark: character|texture|img
},
Input_Field:
{
(same as Borders)
},
Scroll_Bars:
{
(same as Borders)
},
Title_Bar:
{
Side: top|right|bottom|left,
Inside_Edge: color|gradient|texture
},
Colors: {
Borders: rgb|hsl|hexcolor,
Buttons: (...),
Menus: (...),
Ticks: (...),
Radios: (...),
Input_Field: {bg:(...),fg:(...)},
Title_Bar: {bg:(...),fb:(...)}
}
}
Now all we need is an actual header file which defines these objects, and a library which reads a configuration file (structured similarly to this pseudo-code) and hands this information over to the toolkit. Text in parenthesis are comments, "(...)" means same as above.
Any takers.