comparison layer/PaintAssistant.cpp @ 1078:ee01a4062747 spectrogram-minor-refactor

Move drawVisibleText to PaintAssistant
author Chris Cannam
date Thu, 30 Jun 2016 12:40:22 +0100
parents b66fb15de477
children 1badacff7ab2
comparison
equal deleted inserted replaced
1077:5144d7185fb5 1078:ee01a4062747
12 License, or (at your option) any later version. See the file 12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information. 13 COPYING included with this distribution for more information.
14 */ 14 */
15 15
16 #include "PaintAssistant.h" 16 #include "PaintAssistant.h"
17
18 #include "LayerGeometryProvider.h"
17 19
18 #include "base/AudioLevel.h" 20 #include "base/AudioLevel.h"
19 21
20 #include <QPaintDevice> 22 #include <QPaintDevice>
21 #include <QPainter> 23 #include <QPainter>
205 break; 207 break;
206 } 208 }
207 209
208 return vy; 210 return vy;
209 } 211 }
212
213 void
214 PaintAssistant::drawVisibleText(const LayerGeometryProvider *v,
215 QPainter &paint, int x, int y,
216 QString text, TextStyle style)
217 {
218 if (style == OutlinedText || style == OutlinedItalicText) {
219
220 paint.save();
221
222 if (style == OutlinedItalicText) {
223 QFont f(paint.font());
224 f.setItalic(true);
225 paint.setFont(f);
226 }
227
228 QColor penColour, surroundColour, boxColour;
229
230 penColour = v->getForeground();
231 surroundColour = v->getBackground();
232 boxColour = surroundColour;
233 boxColour.setAlpha(127);
234
235 paint.setPen(Qt::NoPen);
236 paint.setBrush(boxColour);
237
238 QRect r = paint.fontMetrics().boundingRect(text);
239 r.translate(QPoint(x, y));
240 // cerr << "drawVisibleText: r = " << r.x() << "," <<r.y() << " " << r.width() << "x" << r.height() << endl;
241 paint.drawRect(r);
242 paint.setBrush(Qt::NoBrush);
243
244 paint.setPen(surroundColour);
245
246 for (int dx = -1; dx <= 1; ++dx) {
247 for (int dy = -1; dy <= 1; ++dy) {
248 if (!(dx || dy)) continue;
249 paint.drawText(x + dx, y + dy, text);
250 }
251 }
252
253 paint.setPen(penColour);
254
255 paint.drawText(x, y, text);
256
257 paint.restore();
258
259 } else {
260
261 std::cerr << "ERROR: PaintAssistant::drawVisibleText: Boxed style not yet implemented!" << std::endl;
262 }
263 }