Katana Plug-in APIs 0.1

FileSequencePlugin.h

00001 // Copyright (c) 2012 The Foundry Visionmongers Ltd. All Rights Reserved.
00002 #pragma once
00003 
00004 #include <cstdint>
00005 #include <limits>
00006 #include <string>
00007 #include <vector>
00008 #include <FnAsset/plugin/FnFileSequence.h>
00009 #include <FnPluginSystem/FnPlugin.h>
00010 #include <FnPluginSystem/FnPluginSystem.h>
00011 
00012 #include "SequenceMatching.h"
00013 
00014 class FileSeq : public FnKat::FileSequence
00015 {
00016 public:
00017     FileSeq(std::string prefix,
00018             std::string suffix,
00019             int32_t firstFrame,
00020             int32_t lastFrame,
00021             size_t padding);
00022 
00023     explicit FileSeq(const std::string& fileSequenceString);
00024     virtual ~FileSeq() = default;
00025 
00026     FileSeq(const FileSeq& other) = default;
00027     FileSeq(FileSeq&& other) = default;
00028 
00029     static FnPlugStatus setHost(FnPluginHost* host);
00030     static FnPluginHost* getHost();
00031 
00032     bool isValid() const override;
00033     FileSequence* clone() const override;
00034     void getAsString(std::string& retValue) override;
00035     void getDirectory(std::string& retValue) override;
00036     void getPrefix(std::string& retValue) override;
00037     void getSuffix(std::string& retValue) override;
00038     unsigned int getPadding() override;
00039     void getResolvedPath(const int frame, std::string& retValue) override;
00040     bool hasFrameSet() override;
00041     bool isFrameInFrameSet(const int frame) override;
00042     int getFirstFrameInFrameSet() override;
00043     int getLastFrameInFrameSet() override;
00044     void getNearestFramesInFrameSet(int frame,
00045                                     bool* hasLeft,
00046                                     int* nearestLeft,
00047                                     bool* hasRight,
00048                                     int* nearestRight) override;
00049     void getFrameListFromFrameSet(std::vector<int>& returnList) override;
00050 
00051     static FileSequence* create(const char*);
00052     static bool isFileSequence(const char*);
00053     static std::string buildFileSequenceString(const std::string& prefix,
00054                                                const std::string& suffix,
00055                                                int padding);
00056     static FnKat::FileSequenceArray* findSequence(const char** fileList,
00057                                                   unsigned int fileCount);
00058     static void flush() {}
00059 
00060 private:
00061     static FnPluginHost* m_host;
00062     std::string convertAssetIDToFilePath(const std::string& assetID) const;
00063     std::string _prefix;
00064     std::string _suffix;
00065     int32_t _firstFrame{std::numeric_limits<int32_t>::min()};
00066     int32_t _lastFrame{std::numeric_limits<int32_t>::min()};
00067     unsigned int _padding{0};
00068     bool _hasFrameSet{true};
00069     bool _isValid{true};
00070     std::string _sequenceStringForm;
00071 
00072     std::string generateStringForm();
00073 };
 All Classes Functions Variables Typedefs Enumerations Enumerator