1 /**************************************************************************
3 * Copyright 2013-2014 RAD Game Tools and Valve Software
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 **************************************************************************/
27 #include "vogleditor_timelineitem.h"
29 vogleditor_timelineItem::vogleditor_timelineItem(float time, vogleditor_timelineItem* parent)
34 m_maxChildDuration(0),
41 vogleditor_timelineItem::vogleditor_timelineItem(float begin, float end, vogleditor_timelineItem* parent)
44 m_duration(end - begin),
46 m_maxChildDuration(end - begin),
53 vogleditor_timelineItem::~vogleditor_timelineItem()
55 for (int i = 0; i < m_childItems.size(); i++)
57 delete m_childItems[i];
58 m_childItems[i] = NULL;
63 void vogleditor_timelineItem::appendChild(vogleditor_timelineItem* child)
65 m_childItems.append(child);
67 if (m_childItems.size() == 1)
69 // just added the first child, so overwrite the current maxChildDuration
70 m_maxChildDuration = child->getMaxChildDuration();
74 // update the maxChildDuration if needed
75 m_maxChildDuration = std::max(m_maxChildDuration, child->getMaxChildDuration());
79 vogleditor_timelineItem* vogleditor_timelineItem::child(int row)
81 return m_childItems[row];
84 int vogleditor_timelineItem::childCount() const
86 return m_childItems.size();
89 vogleditor_timelineItem* vogleditor_timelineItem::parent()
94 QBrush* vogleditor_timelineItem::getBrush()
96 // if a local brush isn't set, use the parent's brush as a default
101 return parent()->getBrush();
112 void vogleditor_timelineItem::setBrush(QBrush* brush)
117 float vogleditor_timelineItem::getBeginTime() const
122 float vogleditor_timelineItem::getEndTime() const
127 float vogleditor_timelineItem::getDuration() const
132 bool vogleditor_timelineItem::isSpan() const
137 bool vogleditor_timelineItem::isMarker() const
142 float vogleditor_timelineItem::getMaxChildDuration() const
144 return m_maxChildDuration;