aboutsummaryrefslogtreecommitdiff
path: root/src/tests/testFont.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/testFont.cc')
-rw-r--r--src/tests/testFont.cc58
1 files changed, 44 insertions, 14 deletions
diff --git a/src/tests/testFont.cc b/src/tests/testFont.cc
index 2ee764c..b382594 100644
--- a/src/tests/testFont.cc
+++ b/src/tests/testFont.cc
@@ -43,6 +43,7 @@ public:
43 0, 0, 640, 480, KeyPressMask | ExposureMask) { 43 0, 0, 640, 480, KeyPressMask | ExposureMask) {
44 m_background = background; 44 m_background = background;
45 m_foreground = foreground; 45 m_foreground = foreground;
46 m_orient = FbTk::ROT0;
46 m_win.show(); 47 m_win.show();
47 m_win.setBackgroundColor(FbTk::Color(background.c_str(), m_win.screenNumber())); 48 m_win.setBackgroundColor(FbTk::Color(background.c_str(), m_win.screenNumber()));
48 FbTk::EventManager::instance()->add(*this, m_win); 49 FbTk::EventManager::instance()->add(*this, m_win);
@@ -70,43 +71,70 @@ public:
70 71
71 void redraw() { 72 void redraw() {
72 size_t text_w = m_font.textWidth(m_text.c_str(), m_text.size()); 73 size_t text_w = m_font.textWidth(m_text.c_str(), m_text.size());
74 int mult = 1;
75 if (m_orient == FbTk::ROT180)
76 mult = -1;
73 size_t text_h = m_font.height(); 77 size_t text_h = m_font.height();
74 int x = 640/2 - text_w/2; 78 int x = 640/2 - mult* text_w/2;
75 int y = 480/2 - text_h/2; 79 int y = 480/2 - mult*text_h/2;
76 m_win.clear(); 80 m_win.clear();
77 FbTk::GContext wingc(m_win.drawable()); 81 FbTk::GContext wingc(m_win.drawable());
78 82
83 int bx1 = 0;
84 int by1 = 0;
85 int bx2 = text_w;
86 int by2 = 0;
87 int tmp;
88
89 switch (m_orient) {
90 case FbTk::ROT90:
91 by2 = bx2;
92 bx2 = 0;
93 break;
94 case FbTk::ROT180:
95 bx2 = -bx2;
96 break;
97 case FbTk::ROT270:
98 by2 = -bx2;
99 bx2 = 0;
100 break;
101 }
102
103/*
79 m_win.drawLine(wingc.gc(), 104 m_win.drawLine(wingc.gc(),
80 x, y + m_font.descent(), 105 x, y + m_font.descent(),
81 x + text_w, y + m_font.descent()); 106 x + text_w, y + m_font.descent());
82 m_win.drawLine(wingc.gc(), 107 m_win.drawLine(wingc.gc(),
83 x, y - text_h, 108 x, y - text_h,
84 x + text_w, y - text_h); 109 x + text_w, y - text_h);
110*/
111 // draw the baseline in red
85 wingc.setForeground(FbTk::Color("red", m_win.screenNumber())); 112 wingc.setForeground(FbTk::Color("red", m_win.screenNumber()));
86 m_win.drawLine(wingc.gc(), 113 m_win.drawLine(wingc.gc(),
87 x, y, x + text_w, y); 114 x + bx1, y + by1, x + bx2, y+by2);
88 wingc.setForeground(FbTk::Color(m_foreground.c_str(), m_win.screenNumber())); 115 wingc.setForeground(FbTk::Color(m_foreground.c_str(), m_win.screenNumber()));
89 //cerr<<"text width: "<<m_font.textWidth(m_text.c_str(), m_text.size())<<endl; 116 cerr<<"text size "<<text_w<<"x"<<text_h<<endl;
90 m_font.drawText(m_win, 117 m_font.drawText(m_win,
91 0, wingc.gc(), 118 0, wingc.gc(),
92 m_text.c_str(), m_text.size(), 119 m_text.c_str(), m_text.size(),
93 x, y); 120 x, y, m_orient);
94 121
95 } 122 }
96 123
97 FbTk::Font &font() { return m_font; } 124 FbTk::Font &font() { return m_font; }
98 void setText(const std::string& text) { m_text = text; } 125 void setText(const std::string& text, const FbTk::Orientation orient) { m_text = text; m_orient = orient; }
99 126
100private: 127private:
101 string m_foreground, m_background; 128 string m_foreground, m_background;
102 FbTk::FbWindow m_win; 129 FbTk::FbWindow m_win;
103 FbTk::Font m_font; 130 FbTk::Font m_font;
131 FbTk::Orientation m_orient;
104 string m_text; 132 string m_text;
105}; 133};
106 134
107int main(int argc, char **argv) { 135int main(int argc, char **argv) {
108 //bool antialias = false; 136 //bool antialias = false;
109 bool rotate = false; 137 FbTk::Orientation orient = FbTk::ROT0;
110 bool xft = false; 138 bool xft = false;
111 string fontname(""); 139 string fontname("");
112 string displayname(""); 140 string displayname("");
@@ -122,8 +150,8 @@ int main(int argc, char **argv) {
122 displayname = argv[++a]; 150 displayname = argv[++a];
123 } else if (strcmp("-text", argv[a]) == 0 && a + 1 < argc) { 151 } else if (strcmp("-text", argv[a]) == 0 && a + 1 < argc) {
124 text = argv[++a]; 152 text = argv[++a];
125 } else if (strcmp("-rotate", argv[a]) == 0) { 153 } else if (strcmp("-orient", argv[a]) == 0) {
126 rotate = true; 154 orient = (FbTk::Orientation) (atoi(argv[++a]) % 4);
127 } else if (strcmp("-bg", argv[a]) == 0 && a + 1 < argc) { 155 } else if (strcmp("-bg", argv[a]) == 0 && a + 1 < argc) {
128 background = argv[++a]; 156 background = argv[++a];
129 } else if (strcmp("-fg", argv[a]) == 0 && a + 1 < argc) { 157 } else if (strcmp("-fg", argv[a]) == 0 && a + 1 < argc) {
@@ -134,7 +162,7 @@ int main(int argc, char **argv) {
134 // cerr<<"-antialias"<<endl; 162 // cerr<<"-antialias"<<endl;
135 cerr<<"-display <display>"<<endl; 163 cerr<<"-display <display>"<<endl;
136 cerr<<"-text <text>"<<endl; 164 cerr<<"-text <text>"<<endl;
137 cerr<<"-rotate"<<endl; 165 cerr<<"-orient"<<endl;
138 cerr<<"-fg <foreground color>"<<endl; 166 cerr<<"-fg <foreground color>"<<endl;
139 cerr<<"-bg <background color>"<<endl; 167 cerr<<"-bg <background color>"<<endl;
140 cerr<<"-h"<<endl; 168 cerr<<"-h"<<endl;
@@ -148,10 +176,12 @@ int main(int argc, char **argv) {
148 //app.font().setAntialias(antialias); 176 //app.font().setAntialias(antialias);
149 if (!app.font().load(fontname.c_str())) 177 if (!app.font().load(fontname.c_str()))
150 cerr<<"Failed to load: "<<fontname<<endl; 178 cerr<<"Failed to load: "<<fontname<<endl;
179 if (orient && !app.font().validOrientation(orient)) {
180 cerr<<"Orientation not valid ("<<orient<<")"<<endl;
181 orient = FbTk::ROT0;
182 }
151 cerr<<"Setting text: "<<text<<endl; 183 cerr<<"Setting text: "<<text<<endl;
152 app.setText(text); 184 app.setText(text, orient);
153 if (rotate)
154 app.font().rotate(90);
155 185
156 app.redraw(); 186 app.redraw();
157 app.eventLoop(); 187 app.eventLoop();