#include "Styler.h" #define IMAGECLASS StylerCtrlsImg #define IMAGEFILE #include void ColorizeIml(Iml& target, Iml& source, const Color& c, int alpha) { for(int i = 0; i < target.GetCount(); i++) { int q = source.Find(target.GetId(i)); if(q >= 0) { Image m = Colorize(source.Get(q), c, alpha); target.Set(i, m); } } } void RefreshGlobalStyles() { ChFinish(); } void RefreshLayoutDeepAll() { Vector vc = Ctrl::GetTopWindows(); for(int i = 0; i < vc.GetCount(); i++) vc[i]->RefreshLayoutDeep(); } void ChStylerSkin(const Color& c, int blnd, const Color& fg, const Color& bg) { ChStdSkin(); ColorizeIml(CtrlsImg::Iml(), StylerCtrlsImg::Iml(), c, 255); SColorFace_Write(Blend(c, fg, blnd)); //controls face color SColorShadow_Write(Blend(c, bg, blnd)); SColorLtFace_Write(Blend(c, fg, blnd+20)); SColorDkShadow_Write(Blend(c, bg, blnd+20)); SColorHighlight_Write(Blend(fg, c, blnd+20)); SColorDisabled_Write(Blend(bg, c, blnd+20)); SColorPaper_Write(Blend(c, fg, blnd+40)); //for lists, edits etc.. SColorText_Write(Blend(c, bg, blnd+40)); SColorHighlightText_Write(Blend(c, fg, blnd+60)); SColorLight_Write(SColorHighlight()); SColorMenu_Write(SColorPaper()); SColorMenuText_Write(SColorText()); SColorInfo_Write(SColorPaper()); SColorInfoText_Write(SColorText()); SColorMark_Write(SColorText()); SColorLabel_Write(SColorText()); LabelBoxTextColor_Write(SColorText()); LabelBoxColor_Write(SColorHighlight()); } void StylerCtrl::ColorizedSkin() { Color c = ~mcl; int blnd = ~bl; Color fg = ~fgcl; Color bg = ~bgcl; if(Grayscale(fg)FindTag(tag); if(i>=0) { ::Xmlize(xml.At(i), c); } } } #define XMLIZECOL(TAG, SCOL) \ if(xml.IsStoring()) \ XmlizeCol(xml, TAG, c = SCOL()); \ if(xml.IsLoading()) \ { \ c = Null; \ XmlizeCol(xml, TAG, c); if(!c.IsNullInstance()) COMBINE(SCOL, _Write)(c); \ } \ \ NAMESPACE_UPP template<> Stream& operator%(Stream& s, PerChStyle& o) { Vector vc; if(s.IsStoring()) { vc << SColorFace() << SColorShadow() << SColorLtFace() << SColorDkShadow() << SColorHighlight() << SColorDisabled() << SColorPaper() << SColorText() << SColorHighlightText() << SColorLight() << SColorMenu() << SColorMenuText() << SColorMenuMark() << SColorInfo() << SColorInfoText() << SColorMark() << SColorLabel() << LabelBoxTextColor() << LabelBoxColor() ; } s % vc; if(s.IsLoading()) { int i = 0; SColorFace_Write(vc[i++]); SColorShadow_Write(vc[i++]); SColorLtFace_Write(vc[i++]); SColorDkShadow_Write(vc[i++]); SColorHighlight_Write(vc[i++]); SColorDisabled_Write(vc[i++]); SColorPaper_Write(vc[i++]); SColorText_Write(vc[i++]); SColorHighlightText_Write(vc[i++]); SColorLight_Write(vc[i++]); SColorMenu_Write(vc[i++]); SColorMenuText_Write(vc[i++]); SColorMenuMark_Write(vc[i++]); SColorInfo_Write(vc[i++]); SColorInfoText_Write(vc[i++]); SColorMark_Write(vc[i++]); SColorLabel_Write(vc[i++]); LabelBoxTextColor_Write(vc[i++]); LabelBoxColor_Write(vc[i++]); } return s; } template<> void Xmlize(XmlIO xml, PerChStyle& o) { Color c; XMLIZECOL("face", SColorFace) XMLIZECOL("shadow", SColorShadow) XMLIZECOL("ltface", SColorLtFace) XMLIZECOL("dkshadow", SColorDkShadow) XMLIZECOL("highlight", SColorHighlight) XMLIZECOL("disabled", SColorDisabled) XMLIZECOL("paper", SColorPaper) XMLIZECOL("text", SColorText) XMLIZECOL("highlighttext", SColorHighlightText) XMLIZECOL("light", SColorLight) XMLIZECOL("menu", SColorMenu) XMLIZECOL("menutext", SColorMenuText) XMLIZECOL("menumark", SColorMenuMark) XMLIZECOL("info", SColorInfo) XMLIZECOL("infotext", SColorInfoText) XMLIZECOL("mark", SColorMark) XMLIZECOL("label", SColorLabel) XMLIZECOL("labelboxtext", LabelBoxTextColor) XMLIZECOL("labelbox", LabelBoxColor) } END_UPP_NAMESPACE