annotate layer/PaintAssistant.h @ 1363:bbeffb29bf09

Fix inconsistency between centre frame actually set and centre frame notified as set, which caused the start frame location to creep out of place gradually as you page through
author Chris Cannam
date Tue, 30 Oct 2018 14:00:20 +0000
parents a34a2a25907c
children cca66ce390e0
rev   line source
Chris@195 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@195 2
Chris@195 3 /*
Chris@195 4 Sonic Visualiser
Chris@195 5 An audio file viewer and annotation editor.
Chris@195 6 Centre for Digital Music, Queen Mary, University of London.
Chris@195 7 This file copyright 2006-2007 Chris Cannam and QMUL.
Chris@195 8
Chris@195 9 This program is free software; you can redistribute it and/or
Chris@195 10 modify it under the terms of the GNU General Public License as
Chris@195 11 published by the Free Software Foundation; either version 2 of the
Chris@195 12 License, or (at your option) any later version. See the file
Chris@195 13 COPYING included with this distribution for more information.
Chris@195 14 */
Chris@195 15
Chris@1228 16 #ifndef SV_PAINT_ASSISTANT_H
Chris@1228 17 #define SV_PAINT_ASSISTANT_H
Chris@195 18
Chris@195 19 #include <QRect>
Chris@1228 20 #include <QPen>
Chris@195 21 #include <vector>
Chris@195 22
Chris@195 23 class QPainter;
Chris@1078 24 class Layer;
Chris@1078 25 class LayerGeometryProvider;
Chris@195 26
Chris@195 27 class PaintAssistant
Chris@195 28 {
Chris@195 29 public:
Chris@195 30 enum Scale { LinearScale, MeterScale, dBScale };
Chris@195 31
Chris@195 32 static void paintVerticalLevelScale(QPainter &p, QRect rect,
Chris@905 33 double minVal, double maxVal,
Chris@220 34 Scale scale, int &multRtn,
Chris@195 35 std::vector<int> *markCoordRtns = 0);
Chris@195 36
Chris@905 37 static int getYForValue(Scale scale, double value,
Chris@905 38 double minVal, double maxVal,
Chris@195 39 int minY, int height);
Chris@1078 40
Chris@1078 41 enum TextStyle {
Chris@1266 42 BoxedText,
Chris@1266 43 OutlinedText,
Chris@1078 44 OutlinedItalicText
Chris@1078 45 };
Chris@1078 46
Chris@1078 47 static void drawVisibleText(const LayerGeometryProvider *,
Chris@1078 48 QPainter &p, int x, int y,
Chris@1078 49 QString text, TextStyle style);
Chris@1228 50
Chris@1228 51 /**
Chris@1228 52 * Scale up pen width for a hi-dpi display without pixel doubling.
Chris@1228 53 * Very similar to ViewManager::scalePixelSize, but a bit more
Chris@1228 54 * conservative.
Chris@1228 55 */
Chris@1228 56 static double scalePenWidth(double width);
Chris@1228 57
Chris@1228 58 /**
Chris@1228 59 * Apply scalePenWidth to a pen.
Chris@1228 60 */
Chris@1228 61 static QPen scalePen(QPen pen);
Chris@195 62 };
Chris@195 63
Chris@195 64 #endif