annotate base/LogRange.h @ 1247:8f076d02569a piper

Make SVDEBUG always write to a log file -- formerly this was disabled in NDEBUG builds. I think there's little use to that, it just means that we keep adding more cerr debug output because we aren't getting the log we need. And SVDEBUG logging is not usually used in tight loops, I don't think the performance overhead is too serious. Also update the About box.
author Chris Cannam
date Thu, 03 Nov 2016 14:57:00 +0000
parents 31f01931b781
children 667e369cfeab
rev   line source
Chris@224 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@224 2
Chris@224 3 /*
Chris@224 4 Sonic Visualiser
Chris@224 5 An audio file viewer and annotation editor.
Chris@224 6 Centre for Digital Music, Queen Mary, University of London.
Chris@224 7 This file copyright 2006 Chris Cannam.
Chris@224 8
Chris@224 9 This program is free software; you can redistribute it and/or
Chris@224 10 modify it under the terms of the GNU General Public License as
Chris@224 11 published by the Free Software Foundation; either version 2 of the
Chris@224 12 License, or (at your option) any later version. See the file
Chris@224 13 COPYING included with this distribution for more information.
Chris@224 14 */
Chris@224 15
Chris@224 16 #ifndef _LOG_RANGE_H_
Chris@224 17 #define _LOG_RANGE_H_
Chris@224 18
Chris@478 19 #include <vector>
Chris@687 20 #include "Debug.h"
Chris@478 21
Chris@224 22 class LogRange
Chris@224 23 {
Chris@224 24 public:
Chris@224 25 /**
Chris@224 26 * Map a linear range onto a logarithmic range. min and max are
Chris@224 27 * passed as the extents of the linear range and returned as the
Chris@224 28 * extents of the logarithmic range. thresh is the minimum value
Chris@224 29 * for the log range, to be used if the linear range spans zero.
Chris@224 30 */
Chris@1044 31 static void mapRange(double &min, double &max, double thresh = -10);
Chris@224 32
Chris@224 33 /**
Chris@224 34 * Map a value onto a logarithmic range. This just means taking
Chris@224 35 * the base-10 log of the absolute value, or using the threshold
Chris@224 36 * value if the absolute value is zero.
Chris@224 37 */
Chris@1044 38 static double map(double value, double thresh = -10);
Chris@266 39
Chris@266 40 /**
Chris@266 41 * Map a value from the logarithmic range back again. This just
Chris@266 42 * means taking the value'th power of ten.
Chris@266 43 */
Chris@1044 44 static double unmap(double value);
Chris@478 45
Chris@478 46 /**
Chris@478 47 * Estimate whether a set of values would be more properly shown
Chris@478 48 * using a logarithmic than a linear scale. This is only ever
Chris@478 49 * going to be a rough guess.
Chris@478 50 */
Chris@1044 51 static bool useLogScale(std::vector<double> values);
Chris@478 52
Chris@224 53 };
Chris@224 54
Chris@224 55 #endif