annotate view/ViewProxy.h @ 919:a5488775f880 osx-retina

Pass proxy to layer for painting
author Chris Cannam
date Wed, 18 Mar 2015 13:52:07 +0000
parents
children 43888f891733
rev   line source
Chris@919 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@919 2
Chris@919 3 /*
Chris@919 4 Sonic Visualiser
Chris@919 5 An audio file viewer and annotation editor.
Chris@919 6 Centre for Digital Music, Queen Mary, University of London.
Chris@919 7
Chris@919 8 This program is free software; you can redistribute it and/or
Chris@919 9 modify it under the terms of the GNU General Public License as
Chris@919 10 published by the Free Software Foundation; either version 2 of the
Chris@919 11 License, or (at your option) any later version. See the file
Chris@919 12 COPYING included with this distribution for more information.
Chris@919 13 */
Chris@919 14
Chris@919 15 #ifndef VIEW_PROXY_H
Chris@919 16 #define VIEW_PROXY_H
Chris@919 17
Chris@919 18 #include "LayerGeometryProvider.h"
Chris@919 19
Chris@919 20 class ViewProxy : public LayerGeometryProvider
Chris@919 21 {
Chris@919 22 public:
Chris@919 23 ViewProxy(View *view, int scaleFactor) :
Chris@919 24 m_view(view), m_scaleFactor(scaleFactor) { }
Chris@919 25
Chris@919 26 virtual sv_frame_t getStartFrame() const {
Chris@919 27 return m_view->getStartFrame();
Chris@919 28 }
Chris@919 29 virtual sv_frame_t getCentreFrame() const {
Chris@919 30 return m_view->getCentreFrame();
Chris@919 31 }
Chris@919 32 virtual sv_frame_t getEndFrame() const {
Chris@919 33 return m_view->getEndFrame();
Chris@919 34 }
Chris@919 35 virtual int getXForFrame(sv_frame_t frame) const {
Chris@919 36 return m_scaleFactor * m_view->getXForFrame(frame);
Chris@919 37 }
Chris@919 38 virtual sv_frame_t getFrameForX(int x) const {
Chris@919 39 //!!! todo: interpolate
Chris@919 40 return m_view->getFrameForX(x / m_scaleFactor);
Chris@919 41 }
Chris@919 42 virtual sv_frame_t getModelsStartFrame() const {
Chris@919 43 return m_view->getModelsStartFrame();
Chris@919 44 }
Chris@919 45 virtual sv_frame_t getModelsEndFrame() const {
Chris@919 46 return m_view->getModelsEndFrame();
Chris@919 47 }
Chris@919 48 virtual double getYForFrequency(double frequency,
Chris@919 49 double minFreq, double maxFreq,
Chris@919 50 bool logarithmic) const {
Chris@919 51 return m_scaleFactor *
Chris@919 52 m_view->getYForFrequency(frequency, minFreq, maxFreq, logarithmic);
Chris@919 53 }
Chris@919 54 virtual double getFrequencyForY(int y, double minFreq, double maxFreq,
Chris@919 55 bool logarithmic) const {
Chris@919 56 //!!! todo: interpolate
Chris@919 57 return m_view->getFrequencyForY(y / m_scaleFactor, minFreq, maxFreq, logarithmic);
Chris@919 58 }
Chris@919 59 virtual int getTextLabelHeight(const Layer *layer, QPainter &paint) const {
Chris@919 60 return m_scaleFactor * m_view->getTextLabelHeight(layer, paint);
Chris@919 61 }
Chris@919 62 virtual bool getValueExtents(QString unit, double &min, double &max,
Chris@919 63 bool &log) const {
Chris@919 64 return m_view->getValueExtents(unit, min, max, log);
Chris@919 65 }
Chris@919 66 virtual int getZoomLevel() const {
Chris@919 67 //!!! aarg, what if it's already 1?
Chris@919 68 int z = m_view->getZoomLevel();
Chris@919 69 cerr << "getZoomLevel: from " << z << " to ";
Chris@919 70 z = z / m_scaleFactor;
Chris@919 71 cerr << z << endl;
Chris@919 72 return z;
Chris@919 73 }
Chris@919 74 virtual QRect getPaintRect() const {
Chris@919 75 QRect r = m_view->getPaintRect();
Chris@919 76 return QRect(r.x() * m_scaleFactor,
Chris@919 77 r.y() * m_scaleFactor,
Chris@919 78 r.width() * m_scaleFactor,
Chris@919 79 r.height() * m_scaleFactor);
Chris@919 80 }
Chris@919 81 virtual QSize getPaintSize() const { return getPaintRect().size(); }
Chris@919 82 virtual int getPaintWidth() const { return getPaintRect().width(); }
Chris@919 83 virtual int getPaintHeight() const { return getPaintRect().height(); }
Chris@919 84 virtual bool hasLightBackground() const {
Chris@919 85 return m_view->hasLightBackground();
Chris@919 86 }
Chris@919 87 virtual QColor getForeground() const {
Chris@919 88 return m_view->getForeground();
Chris@919 89 }
Chris@919 90 virtual QColor getBackground() const {
Chris@919 91 return m_view->getBackground();
Chris@919 92 }
Chris@919 93 virtual ViewManager *getViewManager() const {
Chris@919 94 return m_view->getViewManager();
Chris@919 95 }
Chris@919 96
Chris@919 97 virtual bool shouldIlluminateLocalFeatures(const Layer *layer, QPoint &point) const {
Chris@919 98 return m_view->shouldIlluminateLocalFeatures(layer, point);
Chris@919 99 }
Chris@919 100 virtual bool shouldShowFeatureLabels() const {
Chris@919 101 return m_view->shouldShowFeatureLabels();
Chris@919 102 }
Chris@919 103
Chris@919 104 virtual void drawVisibleText(QPainter &p, int x, int y,
Chris@919 105 QString text, TextStyle style) const {
Chris@919 106 m_view->drawVisibleText(p, x, y, text, style);
Chris@919 107 }
Chris@919 108
Chris@919 109 virtual void drawMeasurementRect(QPainter &p, const Layer *layer,
Chris@919 110 QRect rect, bool focus) const {
Chris@919 111 m_view->drawMeasurementRect(p, layer, rect, focus);
Chris@919 112 }
Chris@919 113
Chris@919 114 virtual View *getView() { return m_view; }
Chris@919 115 virtual const View *getView() const { return m_view; }
Chris@919 116
Chris@919 117 private:
Chris@919 118 View *m_view;
Chris@919 119 int m_scaleFactor;
Chris@919 120 };
Chris@919 121
Chris@919 122 #endif