X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fevoral%2Fevoral%2Ftypes.hpp;h=a2cc814c69c4e09c29f8239c9ff395f42ad1cb31;hb=e258b2622a4386b405c2216d79b34887c3ed55bf;hp=e078a69a03e6ddb5e6436e6ba9d94c358b5d0352;hpb=d357eca668044badcb4bab318e2e74cfffa9a0b0;p=ardour.git diff --git a/libs/evoral/evoral/types.hpp b/libs/evoral/evoral/types.hpp index e078a69a03..a2cc814c69 100644 --- a/libs/evoral/evoral/types.hpp +++ b/libs/evoral/evoral/types.hpp @@ -1,16 +1,16 @@ /* This file is part of Evoral. * Copyright (C) 2008 Dave Robillard * Copyright (C) 2000-2008 Paul Davis - * + * * Evoral is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. - * + * * Evoral is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -19,13 +19,38 @@ #ifndef EVORAL_TYPES_HPP #define EVORAL_TYPES_HPP +#include +#include +#include +#include + +namespace Evoral { + /** Frame count (i.e. length of time in audio frames) */ -typedef uint32_t nframes_t; +typedef uint32_t FrameTime; + +/** Musical time: beats relative to some defined origin */ +typedef double MusicalTime; +const MusicalTime MaxMusicalTime = DBL_MAX; +const MusicalTime MinMusicalTime = DBL_MIN; + +static inline bool musical_time_equal (MusicalTime a, MusicalTime b) { + /* acceptable tolerance is 1 tick. Nice if there was no magic number here */ + return fabs (a - b) <= (1.0/1920.0); +} + +/** Type of an event (opaque, mapped by application) */ +typedef uint32_t EventType; -/** Time-stamp of an event */ -typedef double timestamp_t; +/** Type to describe the movement of a time range */ +template +struct RangeMove { + RangeMove (T f, FrameTime l, T t) : from (f), length (l), to (t) {} + T from; ///< start of the range + FrameTime length; ///< length of the range + T to; ///< new start of the range +}; -/** Duration of time in timestamp_t units */ -typedef timestamp_t timedur_t; +} // namespace Evoral #endif // EVORAL_TYPES_HPP