8#ifndef PXR_BASE_TS_KEY_FRAME_MAP_H
9#define PXR_BASE_TS_KEY_FRAME_MAP_H
12#include "pxr/base/ts/api.h"
13#include "pxr/base/ts/keyFrame.h"
16PXR_NAMESPACE_OPEN_SCOPE
36 typedef std::vector<TsKeyFrame>::iterator iterator;
37 typedef std::vector<TsKeyFrame>::const_iterator const_iterator;
38 typedef std::vector<TsKeyFrame>::reverse_iterator reverse_iterator;
39 typedef std::vector<TsKeyFrame>::const_reverse_iterator const_reverse_iterator;
62 const_iterator begin()
const {
72 const_iterator end()
const {
77 reverse_iterator rbegin() {
78 return _data.rbegin();
82 const_reverse_iterator rbegin()
const {
83 return _data.rbegin();
87 reverse_iterator rend() {
92 const_reverse_iterator rend()
const {
102 size_t max_size()
const {
103 return _data.max_size();
108 return _data.empty();
112 void reserve(
size_t size) {
123 other._data.swap(_data);
127 void swap(std::vector<TsKeyFrame>& other) {
132 void erase(iterator first, iterator last) {
133 _data.erase(first,last);
137 void erase(iterator i) {
143 return (_data == other._data);
148 return (_data != other._data);
152 iterator lower_bound(TsTime t);
155 const_iterator lower_bound(TsTime t)
const;
158 iterator upper_bound(TsTime t);
161 const_iterator upper_bound(TsTime t)
const;
164 iterator find(
const TsTime &t) {
165 iterator i = lower_bound(t);
166 if (i != _data.end() && i->GetTime() == t) {
173 const_iterator find(
const TsTime &t)
const {
174 const_iterator i = lower_bound(t);
175 if (i != _data.end() && i->GetTime() == t) {
186 if (!empty() && value.
GetTime() <= _data.back().GetTime()) {
187 i = lower_bound(value.
GetTime());
190 return _data.insert(i,value);
193 template <
class Iter>
194 void insert(Iter
const& first, Iter
const& last) {
195 for(Iter i = first; i != last; i++) {
201 void erase(TsTime
const& t) {
202 iterator i = find(t);
203 if (i != _data.end()) {
210 iterator i = lower_bound(t);
211 if (i != _data.end() && i->GetTime() == t) {
220 std::vector<TsKeyFrame> _data;
223PXR_NAMESPACE_CLOSE_SCOPE
Specifies the value of an TsSpline object at a particular point in time.
TS_API void SetTime(const TsTime &newTime)
Sets the time of this keyframe.
TS_API TsTime GetTime() const
Gets the time of this keyframe.
An ordered sequence of keyframes with STL-compliant API for finding, inserting, and erasing keyframes...