annotate layer/VerticalBinLayer.h @ 1083:7122aae95a88 spectrogram-minor-refactor

Start introducing render code
author Chris Cannam
date Fri, 01 Jul 2016 11:21:09 +0100
parents 5b4fe7bb9430
children 179ea8a2f650
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@1083 22 *!!! should just be a mapper interface, not a layer one?
Chris@1083 23 *!!! or even an application of RangeMapper
Chris@1082 24 */
Chris@1082 25 class VerticalBinLayer
Chris@1082 26 {
Chris@1082 27 public:
Chris@1082 28 /**
Chris@1082 29 * Return the y coordinate at which the given bin "starts"
Chris@1082 30 * (i.e. at the bottom of the bin, if the given bin is an integer
Chris@1082 31 * and the vertical scale is the usual way up). Bin number may be
Chris@1082 32 * fractional, to obtain a position part-way through a bin.
Chris@1082 33 */
Chris@1082 34 virtual double getYForBin(LayerGeometryProvider *, double bin) const = 0;
Chris@1082 35
Chris@1082 36 /**
Chris@1082 37 * As getYForBin, but rounding to integer values.
Chris@1082 38 */
Chris@1082 39 virtual int getIYForBin(LayerGeometryProvider *, int bin) const = 0;
Chris@1082 40
Chris@1082 41 /**
Chris@1082 42 * Return the bin number, possibly fractional, at the given y
Chris@1082 43 * coordinate. Note that the whole numbers occur at the positions
Chris@1082 44 * at which the bins "start" (i.e. the bottom of the visible bin,
Chris@1082 45 * if the vertical scale is the usual way up).
Chris@1082 46 */
Chris@1082 47 virtual double getBinForY(LayerGeometryProvider *, double y) const = 0;
Chris@1082 48
Chris@1082 49 /**
Chris@1082 50 * As getBinForY, but rounding to integer values.
Chris@1082 51 */
Chris@1082 52 virtual int getIBinForY(LayerGeometryProvider *, int y) const = 0;
Chris@1082 53 };
Chris@1082 54
Chris@1082 55 #endif
Chris@1082 56