1 #ifndef SCALER_H
2 #define SCALER_H
3 
4 #include <QtGui>
5 
6 #define DX(v)   (scaler->dx(v))
7 #define DY(v)   (scaler->dy(v))
8 #define DRECT(v)   (scaler->drect(v))
9 #define DSIZE(v)   (scaler->dsize(v))
10 #define DPOINT(v)   (scaler->dpoint(v))
11 
12 #define X56  (scaler->x56())
13 #define Y56  (scaler->y56())
14 
15 #define X48  (scaler->x48())
16 #define Y48  (scaler->y48())
17 
18 #define X128  (scaler->x128())
19 #define Y128  (scaler->y128())
20 
21 
22 #define X100  (scaler->x100())
23 #define X900  (scaler->x900())
24 #define X910  (scaler->x910())
25 
26 #define Y20  (scaler->y20())
27 
28 #define WIDTH  (scaler->width())
29 #define HEIGHT  (scaler->height())
30 
31 #define RIGHT(v)   (scaler->right(v))
32 #define BOTTOM(v)  (scaler->bottom(v))
33 
34 #define LEFT_CENTER(v, target)  (((target)-(v))/2)
35 
36 class Scaler
37 {
38 public:
39     Scaler();
40 
41     static void init();
42 
43     void rescale(int w, int h);
44 
dx(int val)45     inline int dx(int val) const        { return (int)(cw*val); }
dy(int val)46     inline int dy(int val) const        { return (int)(ch*val); }
47 
drect(const QRect & r)48     inline QRect drect(const QRect &r)
49       { return QRect((int)(cw*r.left()), (int)(ch*r.top()),
50                      (int)(cw*r.width()), (int)(ch*r.height())); }
51 
dsize(const QSize & r)52     inline QSize dsize(const QSize &r)
53       { return QSize((int)(cw*r.width()), (int)(ch*r.height())); }
54 
dpoint(const QPoint & r)55     inline QPoint dpoint(const QPoint &r)
56       { return QPoint((int)(cw*r.x()), (int)(ch*r.y())); }
57 
right(int val)58     inline int right(int val) const     { return win_w-val; }
bottom(int val)59     inline int bottom(int val) const    { return win_h-val; }
60 
x56()61     inline int x56() const              { return m_x56; }
y56()62     inline int y56() const              { return m_y56; }
63 
x48()64     inline int x48() const              { return m_x48; }
y48()65     inline int y48() const              { return m_y48; }
66 
x128()67     inline int x128() const              { return m_x128; }
y128()68     inline int y128() const              { return m_y128; }
69 
x100()70     inline int x100() const              { return m_x100; }
x900()71     inline int x900() const              { return m_x900; }
x910()72     inline int x910() const              { return m_x910; }
73 
y20()74     inline int y20() const              { return m_y20; }
75 
width()76     inline int width() const              { return win_w; }
height()77     inline int height() const              { return win_h; }
78 
79 private:
80     float cw, ch;
81 
82     int m_x56, m_y56;
83     int m_x48, m_y48;
84     int m_x128, m_y128;
85     int m_x100, m_x900, m_x910, m_y20;
86     int win_w, win_h;
87 };
88 
89 extern Scaler *scaler;
90 
91 #endif // SCALER_H
92