diff options
Diffstat (limited to 'src/Font.cc')
-rw-r--r-- | src/Font.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/Font.cc b/src/Font.cc index ddc78e3..cb169ac 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.12 2002/10/14 18:25:37 fluxgen Exp $ | 22 | //$Id: Font.cc,v 1.13 2002/10/15 10:56:49 fluxgen Exp $ |
23 | 23 | ||
24 | 24 | ||
25 | #include "Font.hh" | 25 | #include "Font.hh" |
@@ -65,7 +65,9 @@ namespace FbTk { | |||
65 | bool Font::m_multibyte = false; | 65 | bool Font::m_multibyte = false; |
66 | bool Font::m_utf8mode = false; | 66 | bool Font::m_utf8mode = false; |
67 | 67 | ||
68 | Font::Font(const char *name, bool antialias) { | 68 | Font::Font(const char *name, bool antialias): |
69 | m_fontimp(0), | ||
70 | m_antialias(false) { | ||
69 | 71 | ||
70 | // MB_CUR_MAX returns the size of a char in the current locale | 72 | // MB_CUR_MAX returns the size of a char in the current locale |
71 | if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte | 73 | if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte |
@@ -81,10 +83,11 @@ Font::Font(const char *name, bool antialias) { | |||
81 | } | 83 | } |
82 | 84 | ||
83 | // create the right font implementation | 85 | // create the right font implementation |
86 | // antialias is prio 1 | ||
84 | #ifdef USE_XFT | 87 | #ifdef USE_XFT |
85 | antialias = true; | ||
86 | if (antialias) { | 88 | if (antialias) { |
87 | m_fontimp = std::auto_ptr<FontImp>(new XftFontImp()); | 89 | m_fontimp = std::auto_ptr<FontImp>(new XftFontImp()); |
90 | m_antialias = true; | ||
88 | } | 91 | } |
89 | #endif //USE_XFT | 92 | #endif //USE_XFT |
90 | // if we didn't create a Xft font then create basic font | 93 | // if we didn't create a Xft font then create basic font |
@@ -108,18 +111,19 @@ Font::~Font() { | |||
108 | void Font::setAntialias(bool flag) { | 111 | void Font::setAntialias(bool flag) { |
109 | 112 | ||
110 | #ifdef USE_XFT | 113 | #ifdef USE_XFT |
111 | bool is_antialias = typeid(m_fontimp) == typeid(XftFontImp); | 114 | if (flag && !isAntialias()) { |
112 | |||
113 | if (flag && !is_antialias) { | ||
114 | m_fontimp = std::auto_ptr<FontImp>(new XftFontImp(m_fontstr.c_str())); | 115 | m_fontimp = std::auto_ptr<FontImp>(new XftFontImp(m_fontstr.c_str())); |
115 | } else if (!flag && is_antialias) | 116 | } else if (!flag && isAntialias()) |
116 | #endif // USE_XFT | 117 | #endif // USE_XFT |
117 | { | 118 | { |
118 | if (m_multibyte || m_utf8mode) | 119 | if (m_multibyte || m_utf8mode) |
119 | m_fontimp = std::auto_ptr<FontImp>(new XmbFontImp(m_fontstr.c_str(), m_utf8mode)); | 120 | m_fontimp = std::auto_ptr<FontImp>(new XmbFontImp(m_fontstr.c_str(), m_utf8mode)); |
120 | else | 121 | else { |
121 | m_fontimp = std::auto_ptr<FontImp>(new XFontImp(m_fontstr.c_str())); | 122 | m_fontimp = std::auto_ptr<FontImp>(new XFontImp(m_fontstr.c_str())); |
123 | } | ||
122 | } | 124 | } |
125 | |||
126 | m_antialias = flag; | ||
123 | } | 127 | } |
124 | 128 | ||
125 | bool Font::load(const char *name) { | 129 | bool Font::load(const char *name) { |