00001 #include <qfontdatabase.h> 00002 00003 #include "FontControl.h" 00004 00005 int FontControl::gzoom() 00006 { 00007 if (m_fixgraphics) 00008 { 00009 return 100; 00010 } 00011 else 00012 { 00013 int ret; 00014 if (m_size == g_size) 00015 { 00016 ret = m_fontsizes[m_size]*m_basesize; 00017 } 00018 else if (g_size < 0) 00019 { 00020 int f = -g_size; 00021 ret = (m_fontsizes[0]*m_basesize) >> (f/2); 00022 if (f%2) ret = (2*ret/3); 00023 } 00024 else 00025 { 00026 int f = g_size - m_maxsize + 1; 00027 ret = (m_fontsizes[m_maxsize-1]*m_basesize) << (f/2); 00028 if (f%2) ret = (3*ret/2); 00029 } 00030 return ret; 00031 } 00032 } 00033 00034 bool FontControl::ChangeFont(QString& n, int tgt) 00035 { 00036 QValueList<int>::Iterator it; 00037 QFontDatabase fdb; 00038 QValueList<int> sizes = fdb.pointSizes(n); 00039 if (sizes.count() == 0) 00040 { 00041 return false; 00042 } 00043 else 00044 { 00045 m_fontname = n; 00046 m_maxsize = sizes.count(); 00047 if (m_fontsizes != NULL) delete [] m_fontsizes; 00048 m_fontsizes = new int[m_maxsize]; 00049 uint i = 0; 00050 uint best = 0; 00051 for (it = sizes.begin(); it != sizes.end(); it++) 00052 { 00053 #if defined(OPIE) || !defined(USEQPE) 00054 m_fontsizes[i] = (*it); 00055 #else 00056 m_fontsizes[i] = (*it)/10; 00057 #endif 00058 if (abs(tgt-m_fontsizes[i]) < abs(tgt-m_fontsizes[best])) 00059 { 00060 best = i; 00061 } 00062 i++; 00063 } 00064 g_size = m_size = best; 00065 } 00066 return true; 00067 }
1.4.2