diff options
author | mathias <mathias> | 2005-06-03 07:25:48 (GMT) |
---|---|---|
committer | mathias <mathias> | 2005-06-03 07:25:48 (GMT) |
commit | ef76b45ab1857af1b12f0c336bfb8c0f19140aeb (patch) | |
tree | e380d87f9e4c5e1b27f7aeb8d3aa8acbe0e09d2c /src/FbTk/ThemeItems.cc | |
parent | 9c27e2e7993c9ccd604f77219a1f07c1be22e75a (diff) | |
download | fluxbox_pavel-ef76b45ab1857af1b12f0c336bfb8c0f19140aeb.zip fluxbox_pavel-ef76b45ab1857af1b12f0c336bfb8c0f19140aeb.tar.bz2 |
- Usage of xft-fonts is prefered, except a font-description starts with '-'
- Removed "antialias"-option completly, to enable/disable "antialias"
use either <fontname>:antialias=<bool> in the style or use
Xft.antialias: <bool> in your .Xdefaults
- Added new styleresources:
*.font.effect: <halo|shadow>
*.font.shadow.x : <int> - shadow x offset
*.font.shadow.y : <int> - shadow y offset
*.font.shadow.color : <color> - color of shadow
*.font.halo.color : <color> - color of halo
- Removed 'shadow' and 'halo' options from fontdefinitions:
!! Style authors have to update their styles !!
- Simplified XmbFontImp to not try all possible fonts to match locale
- Style authors may specify multiple fonts:
<font1>|<font2>|<font3>
if loading of font1 fails, fluxbox probes <font2>, etc. The last font is
"fixed". Hints for style authors:
- if xft tries to load a font it will _ALWAYS_ return a valid font,
it doesnt have to look like the one you want to have, read more
about it: http://fontconfig.org/fontconfig-user.html
- export XFT_DEBUG=1 before running fluxbox helps to see
which fonts are picked.
eg:
*.font: Verdana,Arial-12:antialias=true|-artwiz-snap-*-
if fluxbox is compiled with xft this will NEVER try to
load "-artwiz-snap-*-" since xft gives for sure a font,
most likely Verdana or Arial but noone knows. So, if
fluxbox has no xft support the first fontpattern fails
and fluxbox tries the next one, which might be successful.
if everything fails, it will use "fixed"
- Added caching of fonts, fonts are only loaded once.
- Fixed #1090902 (slow utf8 start)
Diffstat (limited to 'src/FbTk/ThemeItems.cc')
-rw-r--r-- | src/FbTk/ThemeItems.cc | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/src/FbTk/ThemeItems.cc b/src/FbTk/ThemeItems.cc index 6b24baf..ccbe3a3 100644 --- a/src/FbTk/ThemeItems.cc +++ b/src/FbTk/ThemeItems.cc | |||
@@ -26,6 +26,10 @@ | |||
26 | #ifndef THEMEITEMS_HH | 26 | #ifndef THEMEITEMS_HH |
27 | #define THEMEITEMS_HH | 27 | #define THEMEITEMS_HH |
28 | 28 | ||
29 | #ifdef HAVE_CONFIG_H | ||
30 | #include "config.h" | ||
31 | #endif // HAVE_CONFIG_H | ||
32 | |||
29 | #include "Theme.hh" | 33 | #include "Theme.hh" |
30 | #include "Color.hh" | 34 | #include "Color.hh" |
31 | #include "Texture.hh" | 35 | #include "Texture.hh" |
@@ -98,9 +102,40 @@ void FbTk::ThemeItem<bool>::setFromString(char const *strval) { | |||
98 | } | 102 | } |
99 | 103 | ||
100 | template <> | 104 | template <> |
105 | void ThemeItem<unsigned int>::setDefaultValue() { | ||
106 | m_value = 0; | ||
107 | } | ||
108 | |||
109 | template <> | ||
110 | void ThemeItem<unsigned int>::setFromString(const char *str) { | ||
111 | sscanf(str, "%d", &m_value); | ||
112 | } | ||
113 | |||
114 | template <> | ||
115 | void ThemeItem<unsigned int>::load(const std::string *name, const std::string *altname) { | ||
116 | } | ||
117 | |||
118 | |||
101 | void ThemeItem<Font>::setDefaultValue() { | 119 | void ThemeItem<Font>::setDefaultValue() { |
102 | if (!m_value.load("fixed")) { | 120 | if (!m_value.load("fixed")) { |
103 | cerr<<"ThemeItem<Font>: Warning! Failed to load default value 'fixed'"<<endl; | 121 | cerr<<"ThemeItem<Font>: Warning! Failed to load default value 'fixed'"<<endl; |
122 | } else { | ||
123 | string effect(ThemeManager::instance().resourceValue(name()+".effect", altName()+".Effect")); | ||
124 | if (effect == "halo") { | ||
125 | m_value.setHalo(true); | ||
126 | FbTk::Color halo_color(ThemeManager::instance().resourceValue(name()+".halo.color", altName()+".Halo.Color").c_str(), | ||
127 | theme().screenNum()); | ||
128 | m_value.setHaloColor(halo_color); | ||
129 | |||
130 | } else if (effect == "shadow" ) { | ||
131 | FbTk::Color shadow_color(ThemeManager::instance().resourceValue(name()+".shadow.x", altName()+".Shadow.X").c_str(), | ||
132 | theme().screenNum()); | ||
133 | |||
134 | m_value.setShadow(true); | ||
135 | m_value.setShadowColor(shadow_color); | ||
136 | m_value.setShadowOffX(atoi(ThemeManager::instance().resourceValue(name()+".shadow.x", altName()+".Shadow.X").c_str())); | ||
137 | m_value.setShadowOffY(atoi(ThemeManager::instance().resourceValue(name()+".shadow.y", altName()+".Shadow.Y").c_str())); | ||
138 | } | ||
104 | } | 139 | } |
105 | } | 140 | } |
106 | 141 | ||
@@ -110,19 +145,30 @@ void ThemeItem<Font>::setFromString(const char *str) { | |||
110 | if (str == 0 || m_value.load(str) == false) { | 145 | if (str == 0 || m_value.load(str) == false) { |
111 | if (ThemeManager::instance().verbose()) { | 146 | if (ThemeManager::instance().verbose()) { |
112 | cerr<<"Theme: Error loading font "<< | 147 | cerr<<"Theme: Error loading font "<< |
113 | ((m_value.isAntialias() || m_value.utf8()) ? "(" : "")<< | 148 | ((m_value.utf8()) ? "(utf8)" : "")<< |
114 | |||
115 | (m_value.isAntialias() ? "antialias" : "")<< | ||
116 | (m_value.utf8() ? " utf8" : "")<< | ||
117 | |||
118 | ((m_value.isAntialias() || m_value.utf8()) ? ") " : "")<< | ||
119 | "for \""<<name()<<"\" or \""<<altName()<<"\": "<<str<<endl; | 149 | "for \""<<name()<<"\" or \""<<altName()<<"\": "<<str<<endl; |
120 | 150 | ||
121 | cerr<<"Theme: Setting default value"<<endl; | 151 | cerr<<"Theme: Setting default value"<<endl; |
122 | } | 152 | } |
123 | setDefaultValue(); | 153 | setDefaultValue(); |
154 | } else { | ||
155 | string effect(ThemeManager::instance().resourceValue(name()+".effect", altName()+".Effect")); | ||
156 | if (effect == "halo") { | ||
157 | m_value.setHalo(true); | ||
158 | FbTk::Color halo_color(ThemeManager::instance().resourceValue(name()+".halo.color", altName()+".Halo.Color").c_str(), | ||
159 | theme().screenNum()); | ||
160 | m_value.setHaloColor(halo_color); | ||
161 | |||
162 | } else if (effect == "shadow" ) { | ||
163 | FbTk::Color shadow_color(ThemeManager::instance().resourceValue(name()+".shadow.x", altName()+".Shadow.X").c_str(), | ||
164 | theme().screenNum()); | ||
165 | |||
166 | m_value.setShadow(true); | ||
167 | m_value.setShadowColor(shadow_color); | ||
168 | m_value.setShadowOffX(atoi(ThemeManager::instance().resourceValue(name()+".shadow.x", altName()+".Shadow.X").c_str())); | ||
169 | m_value.setShadowOffY(atoi(ThemeManager::instance().resourceValue(name()+".shadow.y", altName()+".Shadow.Y").c_str())); | ||
170 | } | ||
124 | } | 171 | } |
125 | |||
126 | } | 172 | } |
127 | 173 | ||
128 | // do nothing | 174 | // do nothing |