mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
92 lines
1.8 KiB
C++
92 lines
1.8 KiB
C++
#include "Theming.h"
|
|
|
|
String ThemeProperties::Raw(const char *id, const String& s)
|
|
{
|
|
if(loading) {
|
|
int q = data.Find(id);
|
|
return q < 0 ? s : data[q];
|
|
}
|
|
else {
|
|
data.GetAdd(id) = s;
|
|
return s;
|
|
}
|
|
}
|
|
|
|
int ThemeProperties::operator()(const char *id, int p)
|
|
{
|
|
return CParser(Raw(id, AsString(p))).ReadInt();
|
|
}
|
|
|
|
Color ThemeProperties::operator()(const char *id, Color p)
|
|
{
|
|
String s = Format("#%02x%02x%02x", p.GetR(), p.GetG(), p.GetB());
|
|
s = Raw(id, s);
|
|
if(s.GetCount()) {
|
|
dword w = stou(~s + 1, NULL, 16);
|
|
return Color(LOBYTE(HIWORD(w)), HIBYTE(w), LOBYTE(w));
|
|
}
|
|
return p;
|
|
}
|
|
|
|
Color ThemeProperties::operator()(Color p)
|
|
{
|
|
return operator()("Color", p);
|
|
}
|
|
|
|
String ThemeProperties::operator()(const char *id, const String& text)
|
|
{
|
|
return CParser(Raw(id, AsCString(text))).ReadString();
|
|
}
|
|
|
|
String ThemeProperties::operator()(const String& text)
|
|
{
|
|
return operator()("Text", text);
|
|
}
|
|
|
|
Font ThemeProperties::operator()(const char *id, Font fnt)
|
|
{
|
|
String s;
|
|
s << AsCString(fnt.GetFaceName()) << ' ' << fnt.GetHeight();
|
|
if(fnt.IsBold())
|
|
s << " bold";
|
|
if(fnt.IsItalic())
|
|
s << " italic";
|
|
if(fnt.IsUnderline())
|
|
s << " underline";
|
|
s = Raw(id, s);
|
|
CParser p(s);
|
|
fnt = StdFont();
|
|
fnt.FaceName(p.ReadString());
|
|
fnt.Height(p.ReadInt());
|
|
while(p) {
|
|
if(p.Id("bold"))
|
|
fnt.Bold();
|
|
else
|
|
if(p.Id("italic"))
|
|
fnt.Italic();
|
|
else
|
|
if(p.Id("underline"))
|
|
fnt.Underline();
|
|
else
|
|
p.ThrowError("Invalid font");
|
|
}
|
|
return fnt;
|
|
}
|
|
|
|
Font ThemeProperties::operator()(Font fnt)
|
|
{
|
|
return operator()("Font", fnt);
|
|
}
|
|
|
|
Image ThemeProperties::operator()(const char *id, const Image& img)
|
|
{
|
|
if(loading)
|
|
return image.Get(id, img);
|
|
image.GetAdd(id) = img;
|
|
return img;
|
|
}
|
|
|
|
Image ThemeProperties::operator()(const Image& img)
|
|
{
|
|
return operator()("Image", img);
|
|
}
|