annotate layer/VerticalBinLayer.h @ 1082:5b4fe7bb9430 spectrogram-minor-refactor

VerticalBinLayer for vertical mapping abstraction. Not totally sure about this
author Chris Cannam
date Fri, 01 Jul 2016 09:55:48 +0100
parents
children 7122aae95a88
rev   line source
Chris@1082 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@1082 2
Chris@1082 3 /*
Chris@1082 4 Sonic Visualiser
Chris@1082 5 An audio file viewer and annotation editor.
Chris@1082 6 Centre for Digital Music, Queen Mary, University of London.
Chris@1082 7 This file copyright 2006-2016 Chris Cannam and QMUL.
Chris@1082 8
Chris@1082 9 This program is free software; you can redistribute it and/or
Chris@1082 10 modify it under the terms of the GNU General Public License as
Chris@1082 11 published by the Free Software Foundation; either version 2 of the
Chris@1082 12 License, or (at your option) any later version. See the file
Chris@1082 13 COPYING included with this distribution for more information.
Chris@1082 14 */
Chris@1082 15
Chris@1082 16 #ifndef VERTICAL_BIN_LAYER_H
Chris@1082 17 #define VERTICAL_BIN_LAYER_H
Chris@1082 18
Chris@1082 19 /**
Chris@1082 20 * Interface for layers in which the Y axis corresponds to bin number
Chris@1082 21 * rather than scale value. Colour3DPlotLayer is the obvious example.
Chris@1082 22 */
Chris@1082 23 class VerticalBinLayer
Chris@1082 24 {
Chris@1082 25 public:
Chris@1082 26 /**
Chris@1082 27 * Return the y coordinate at which the given bin "starts"
Chris@1082 28 * (i.e. at the bottom of the bin, if the given bin is an integer
Chris@1082 29 * and the vertical scale is the usual way up). Bin number may be
Chris@1082 30 * fractional, to obtain a position part-way through a bin.
Chris@1082 31 */
Chris@1082 32 virtual double getYForBin(LayerGeometryProvider *, double bin) const = 0;
Chris@1082 33
Chris@1082 34 /**
Chris@1082 35 * As getYForBin, but rounding to integer values.
Chris@1082 36 */
Chris@1082 37 virtual int getIYForBin(LayerGeometryProvider *, int bin) const = 0;
Chris@1082 38
Chris@1082 39 /**
Chris@1082 40 * Return the bin number, possibly fractional, at the given y
Chris@1082 41 * coordinate. Note that the whole numbers occur at the positions
Chris@1082 42 * at which the bins "start" (i.e. the bottom of the visible bin,
Chris@1082 43 * if the vertical scale is the usual way up).
Chris@1082 44 */
Chris@1082 45 virtual double getBinForY(LayerGeometryProvider *, double y) const = 0;
Chris@1082 46
Chris@1082 47 /**
Chris@1082 48 * As getBinForY, but rounding to integer values.
Chris@1082 49 */
Chris@1082 50 virtual int getIBinForY(LayerGeometryProvider *, int y) const = 0;
Chris@1082 51 };
Chris@1082 52
Chris@1082 53 #endif
Chris@1082 54