Diffstat (limited to 'noncore/apps/opie-reader/FontControl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/FontControl.cpp | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/noncore/apps/opie-reader/FontControl.cpp b/noncore/apps/opie-reader/FontControl.cpp index cfa8534..d082898 100644 --- a/noncore/apps/opie-reader/FontControl.cpp +++ b/noncore/apps/opie-reader/FontControl.cpp | |||
@@ -1,58 +1,68 @@ | |||
1 | #include <qfontdatabase.h> | ||
2 | #include "opie.h" | ||
3 | #include "useqpe.h" | ||
1 | #include "FontControl.h" | 4 | #include "FontControl.h" |
2 | 5 | ||
3 | int FontControl::gzoom() | 6 | int FontControl::gzoom() |
4 | { | 7 | { |
5 | int ret; | 8 | if (m_fixgraphics) |
6 | if (m_size == g_size) | ||
7 | { | 9 | { |
8 | ret = m_fontsizes[m_size]*m_basesize; | 10 | return 100; |
9 | } | 11 | } |
10 | else if (g_size < 0) | 12 | else |
11 | { | 13 | { |
12 | int f = -g_size; | 14 | int ret; |
13 | ret = (m_fontsizes[0]*m_basesize) >> (f/2); | 15 | if (m_size == g_size) |
14 | if (f%2) ret = (2*ret/3); | 16 | { |
15 | } | 17 | ret = m_fontsizes[m_size]*m_basesize; |
16 | else | 18 | } |
17 | { | 19 | else if (g_size < 0) |
18 | int f = g_size - m_maxsize + 1; | 20 | { |
19 | ret = (m_fontsizes[m_maxsize-1]*m_basesize) << (f/2); | 21 | int f = -g_size; |
20 | if (f%2) ret = (3*ret/2); | 22 | ret = (m_fontsizes[0]*m_basesize) >> (f/2); |
23 | if (f%2) ret = (2*ret/3); | ||
24 | } | ||
25 | else | ||
26 | { | ||
27 | int f = g_size - m_maxsize + 1; | ||
28 | ret = (m_fontsizes[m_maxsize-1]*m_basesize) << (f/2); | ||
29 | if (f%2) ret = (3*ret/2); | ||
30 | } | ||
31 | return ret; | ||
21 | } | 32 | } |
22 | return ret; | ||
23 | } | 33 | } |
24 | 34 | ||
25 | bool FontControl::ChangeFont(QString& n, int tgt) | 35 | bool FontControl::ChangeFont(QString& n, int tgt) |
26 | { | 36 | { |
27 | QValueList<int>::Iterator it; | 37 | QValueList<int>::Iterator it; |
28 | QFontDatabase fdb; | 38 | QFontDatabase fdb; |
29 | QValueList<int> sizes = fdb.pointSizes(n); | 39 | QValueList<int> sizes = fdb.pointSizes(n); |
30 | if (sizes.count() == 0) | 40 | if (sizes.count() == 0) |
31 | { | 41 | { |
32 | return false; | 42 | return false; |
33 | } | 43 | } |
34 | else | 44 | else |
35 | { | 45 | { |
36 | m_fontname = n; | 46 | m_fontname = n; |
37 | m_maxsize = sizes.count(); | 47 | m_maxsize = sizes.count(); |
38 | if (m_fontsizes != NULL) delete [] m_fontsizes; | 48 | if (m_fontsizes != NULL) delete [] m_fontsizes; |
39 | m_fontsizes = new int[m_maxsize]; | 49 | m_fontsizes = new int[m_maxsize]; |
40 | uint i = 0; | 50 | uint i = 0; |
41 | uint best = 0; | 51 | uint best = 0; |
42 | for (it = sizes.begin(); it != sizes.end(); it++) | 52 | for (it = sizes.begin(); it != sizes.end(); it++) |
43 | { | 53 | { |
44 | #if defined(OPIE) || !defined(USEQPE) | 54 | #if defined(OPIE) || !defined(USEQPE) |
45 | m_fontsizes[i] = (*it); | 55 | m_fontsizes[i] = (*it); |
46 | #else | 56 | #else |
47 | m_fontsizes[i] = (*it)/10; | 57 | m_fontsizes[i] = (*it)/10; |
48 | #endif | 58 | #endif |
49 | if (abs(tgt-m_fontsizes[i]) < abs(tgt-m_fontsizes[best])) | 59 | if (abs(tgt-m_fontsizes[i]) < abs(tgt-m_fontsizes[best])) |
50 | { | 60 | { |
51 | best = i; | 61 | best = i; |
52 | } | 62 | } |
53 | i++; | 63 | i++; |
54 | } | 64 | } |
55 | g_size = m_size = best; | 65 | g_size = m_size = best; |
56 | } | 66 | } |
57 | return true; | 67 | return true; |
58 | } | 68 | } |