Cortex  10.0.0-a4
FileSequence.h
1 //
3 // Copyright (c) 2009-2010, Image Engine Design Inc. All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 //
12 // * Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the distribution.
15 //
16 // * Neither the name of Image Engine Design nor the names of any
17 // other contributors to this software may be used to endorse or
18 // promote products derived from this software without specific prior
19 // written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22 // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 //
34 
35 #ifndef IE_CORE_FILESEQUENCE_H
36 #define IE_CORE_FILESEQUENCE_H
37 
38 #include <vector>
39 #include <string>
40 
41 #include "boost/format.hpp"
42 #include "boost/regex.hpp"
43 
44 #include "IECore/Export.h"
45 #include "IECore/RunTimeTyped.h"
46 #include "IECore/FrameList.h"
47 
48 namespace IECore
49 {
50 
51 IE_CORE_FORWARDDECLARE( FileSequence );
52 
56 class IECORE_API FileSequence : public RunTimeTyped
57 {
58  public:
59 
60  IE_CORE_DECLARERUNTIMETYPED( FileSequence, RunTimeTyped );
61 
65  FileSequence( const std::string &fileName, FrameListPtr frameList );
66 
71  FileSequence( const std::string &fileSequenceStr );
72  ~FileSequence() override;
73 
74  const std::string &getFileName() const;
75  void setFileName( const std::string &fileName );
76 
77  FrameList *getFrameList();
78  void setFrameList( FrameListPtr frameList );
79 
80  std::string asString() const;
81 
84  unsigned getPadding() const;
85 
88  void setPadding( unsigned padding );
89 
91  std::string getPrefix() const;
92 
94  void setPrefix( const std::string &prefix );
95 
97  std::string getSuffix() const;
98 
100  void setSuffix( const std::string &suffix );
101 
104  std::string fileNameForFrame( FrameList::Frame frameNumber ) const;
105 
107  FrameList::Frame frameForFileName( const std::string &fileName ) const;
108 
111  void fileNames( std::vector< std::string > &f ) const;
112 
115  void clumpedFileNames( unsigned clumpSize, std::vector< std::vector < std::string > > &f ) const;
116 
118  FileSequencePtr copy() const;
119 
120  void mapTo( const FileSequence *other, std::vector< std::pair< std::string, std::string > > &result ) const;
121 
122  void mapTo( const FileSequence *other, std::map< std::string, std::string > &result ) const;
123 
126  static boost::regex fileNameValidator();
127 
128  bool operator ==( const FileSequence &other ) const;
129 
130  protected :
131 
132  std::string m_fileName;
133  FrameListPtr m_frameList;
134 
137  boost::format fileNameTemplate( bool negativeFrame ) const;
138 
139 
140 };
141 
142 } // namespace IECore
143 
144 #endif // IE_CORE_FILESEQUENCE_H
Definition: FileSequence.h:56
Definition: RunTimeTyped.h:211
This namespace contains all components of the core library.
Definition: AddSmoothSkinningInfluencesOp.h:43
Definition: FrameList.h:52