|
Katana Plug-in APIs 0.1
|
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 };
1.7.3