25#ifndef PXR_BASE_TS_KEY_FRAME_MAP_H
26#define PXR_BASE_TS_KEY_FRAME_MAP_H
29#include "pxr/base/ts/api.h"
30#include "pxr/base/ts/keyFrame.h"
33PXR_NAMESPACE_OPEN_SCOPE
53 typedef std::vector<TsKeyFrame>::iterator iterator;
54 typedef std::vector<TsKeyFrame>::const_iterator const_iterator;
55 typedef std::vector<TsKeyFrame>::reverse_iterator reverse_iterator;
56 typedef std::vector<TsKeyFrame>::const_reverse_iterator const_reverse_iterator;
79 const_iterator begin()
const {
89 const_iterator end()
const {
94 reverse_iterator rbegin() {
95 return _data.rbegin();
99 const_reverse_iterator rbegin()
const {
100 return _data.rbegin();
104 reverse_iterator rend() {
109 const_reverse_iterator rend()
const {
114 size_t size()
const {
119 size_t max_size()
const {
120 return _data.max_size();
125 return _data.empty();
129 void reserve(
size_t size) {
140 other._data.swap(_data);
144 void swap(std::vector<TsKeyFrame>& other) {
149 void erase(iterator first, iterator last) {
150 _data.erase(first,last);
154 void erase(iterator i) {
160 return (_data == other._data);
165 return (_data != other._data);
169 iterator lower_bound(TsTime t);
172 const_iterator lower_bound(TsTime t)
const;
175 iterator upper_bound(TsTime t);
178 const_iterator upper_bound(TsTime t)
const;
181 iterator find(
const TsTime &t) {
182 iterator i = lower_bound(t);
183 if (i != _data.end() && i->GetTime() == t) {
190 const_iterator find(
const TsTime &t)
const {
191 const_iterator i = lower_bound(t);
192 if (i != _data.end() && i->GetTime() == t) {
203 if (!empty() && value.
GetTime() <= _data.back().GetTime()) {
204 i = lower_bound(value.
GetTime());
207 return _data.insert(i,value);
210 template <
class Iter>
211 void insert(Iter
const& first, Iter
const& last) {
212 for(Iter i = first; i != last; i++) {
218 void erase(TsTime
const& t) {
219 iterator i = find(t);
220 if (i != _data.end()) {
227 iterator i = lower_bound(t);
228 if (i != _data.end() && i->GetTime() == t) {
237 std::vector<TsKeyFrame> _data;
240PXR_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...