#include "tools.h" #include namespace LtsScriptTimeline { //int Tools::m_timelineLength = 5*60; // minimum len //float Tools::m_zoomFactor = 1; //int Tools::m_scrollPos = 0; //int Tools::m_paintWidth = 1; // rescue from possible 0-div int Tools::getLength(int startTime, int duration) { return /*std::abs*/ (getPos(startTime + duration) - getPos(startTime)); } int Tools::getDuration(int duration) // px => time { double max = Tools::m_timelineLength; max /= Tools::m_zoomFactor; int paintWidth = m_paintWidth; // => 350px double x = duration; // => 466 x /= paintWidth; // => 466 / 350px = 1,33 x *= max; // => 1,33 * 300 = 400 return lrint(x); } int Tools::getTime(int pos, bool neutral) // px => time { double visibleMax = Tools::m_timelineLength; visibleMax /= Tools::m_zoomFactor; if (!neutral) visibleMax += Tools::m_scrollPos; int visibleMin = 0; if (!neutral) visibleMin = Tools::m_scrollPos; double diff = visibleMax - visibleMin; // => 500 - 200 = 300 int paintWidth = m_paintWidth; // => 350px double x = pos; // => 466 x /= paintWidth; // => 466 / 350px = 1,33 x *= diff; // => 1,33 * 300 = 400 x += visibleMin; // => 400 + 0 return lrint(x); } int Tools::getPos(int time, bool neutral) // time => px { double visibleMax = Tools::m_timelineLength; visibleMax /= Tools::m_zoomFactor; if (!neutral) visibleMax += Tools::m_scrollPos; int visibleMin = 0; if (!neutral) visibleMin = Tools::m_scrollPos; double diff = visibleMax - visibleMin; // => 500 - 200 = 300 int paintWidth = m_paintWidth; // => 350px double x = time; // => 400 x -= visibleMin; // => 400 - 0 = 400 x /= diff; // => 400 / 300 = 1,333 x *= paintWidth; // => 1,333 * 350px = 466,666 return lrint(x); } } // namespace LtsScriptTimeline