aboutsummaryrefslogtreecommitdiff
path: root/src/Font.cc
diff options
context:
space:
mode:
authorfluxgen <fluxgen>2002-11-25 14:07:21 (GMT)
committerfluxgen <fluxgen>2002-11-25 14:07:21 (GMT)
commit99c92a637392a988382559d0b162aed68ab83ba8 (patch)
treed353aa10684ed0814327a64e9aef041510e08a41 /src/Font.cc
parent1fc16d3d3d8a62a9697f4a42044b695707fe5d50 (diff)
downloadfluxbox-99c92a637392a988382559d0b162aed68ab83ba8.zip
fluxbox-99c92a637392a988382559d0b162aed68ab83ba8.tar.bz2
fixed rotated text on vertical tab in XFontImp and a rotate function in FontImp interface
Diffstat (limited to 'src/Font.cc')
-rw-r--r--src/Font.cc25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/Font.cc b/src/Font.cc
index a3d3b29..8f683d9 100644
--- a/src/Font.cc
+++ b/src/Font.cc
@@ -19,7 +19,7 @@
19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20// DEALINGS IN THE SOFTWARE. 20// DEALINGS IN THE SOFTWARE.
21 21
22//$Id: Font.cc,v 1.21 2002/11/24 05:23:36 rathnor Exp $ 22//$Id: Font.cc,v 1.22 2002/11/25 14:07:21 fluxgen Exp $
23 23
24 24
25#include "Font.hh" 25#include "Font.hh"
@@ -69,7 +69,7 @@ bool Font::m_utf8mode = false;
69 69
70Font::Font(const char *name, bool antialias): 70Font::Font(const char *name, bool antialias):
71m_fontimp(0), 71m_fontimp(0),
72m_antialias(false) { 72m_antialias(false), m_rotated(false) {
73 73
74 // MB_CUR_MAX returns the size of a char in the current locale 74 // MB_CUR_MAX returns the size of a char in the current locale
75 if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte 75 if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte
@@ -115,7 +115,7 @@ Font::~Font() {
115void Font::setAntialias(bool flag) { 115void Font::setAntialias(bool flag) {
116 bool loaded = m_fontimp->loaded(); 116 bool loaded = m_fontimp->loaded();
117#ifdef USE_XFT 117#ifdef USE_XFT
118 if (flag && !isAntialias()) { 118 if (flag && !isAntialias() && !m_rotated) {
119 m_fontimp.reset(new XftFontImp(m_fontstr.c_str(), m_utf8mode)); 119 m_fontimp.reset(new XftFontImp(m_fontstr.c_str(), m_utf8mode));
120 } else if (!flag && isAntialias()) 120 } else if (!flag && isAntialias())
121#endif // USE_XFT 121#endif // USE_XFT
@@ -164,4 +164,23 @@ void Font::drawText(Drawable w, int screen, GC gc, const char *text, size_t len,
164 m_fontimp->drawText(w, screen, gc, text, len, x, y); 164 m_fontimp->drawText(w, screen, gc, text, len, x, y);
165} 165}
166 166
167void Font::rotate(float angle) {
168#ifdef USE_XFT
169 // if we are rotated and we are changing to horiz text
170 // and we were antialiased before we rotated then change to XftFontImp
171 if (isRotated() && angle == 0 && isAntialias())
172 m_fontimp.reset(new XftFontImp(m_fontstr.c_str(), m_utf8mode));
173#endif // USE_XFT
174 // change to a font imp that handles rotated fonts (i.e just XFontImp at the moment)
175 // if we're going to rotate this font
176 if (angle != 0 && isAntialias() && !isRotated()) {
177 m_fontimp.reset(new XFontImp(m_fontstr.c_str()));
178 }
179
180 //Note: only XFontImp implements FontImp::rotate
181 m_fontimp->rotate(angle);
182
183 m_rotated = (angle == 0 ? false : true);
184}
185
167}; 186};