state.h (2067B)
1 #pragma once 2 3 #include <array> 4 5 #include "jucePluginLib/patchdb/patch.h" 6 #include "jucePluginLib/types.h" 7 8 namespace jucePluginEditorLib::patchManager 9 { 10 class State; 11 class PatchManager; 12 13 class PartState 14 { 15 public: 16 void setSelectedPatch(const pluginLib::patchDB::PatchKey& _patch, uint32_t _searchHandle); 17 18 const auto& getPatch() const { return m_patch; } 19 const auto& getSearchHandle() const { return m_searchHandle; } 20 21 bool isValid() const { return m_patch.isValid() && m_searchHandle != pluginLib::patchDB::g_invalidSearchHandle; } 22 23 void setConfig(pluginLib::PluginStream& _s); 24 void getConfig(pluginLib::PluginStream& _s) const; 25 26 void clear(); 27 28 private: 29 pluginLib::patchDB::PatchKey m_patch; 30 pluginLib::patchDB::SearchHandle m_searchHandle = pluginLib::patchDB::g_invalidSearchHandle; 31 }; 32 33 class State 34 { 35 public: 36 explicit State(PatchManager& _patchManager) : m_patchManager(_patchManager), m_parts({}) 37 { 38 } 39 40 void setSelectedPatch(const uint32_t _part, const pluginLib::patchDB::PatchKey& _patch, uint32_t _searchHandle); 41 42 std::pair<pluginLib::patchDB::PatchPtr, uint32_t> getNeighbourPreset(uint32_t _part, int _offset) const; 43 std::pair<pluginLib::patchDB::PatchPtr, uint32_t> getNeighbourPreset(const pluginLib::patchDB::PatchKey& _patch, pluginLib::patchDB::SearchHandle _searchHandle, int _offset) const; 44 45 pluginLib::patchDB::PatchKey getPatch(uint32_t _part) const; 46 pluginLib::patchDB::SearchHandle getSearchHandle(uint32_t _part) const; 47 48 bool isValid(uint32_t _part) const; 49 50 std::pair<std::vector<pluginLib::patchDB::PatchPtr>, uint32_t> getPatchesAndIndex(const pluginLib::patchDB::PatchKey& _patch, pluginLib::patchDB::SearchHandle _searchHandle) const; 51 52 void setConfig(pluginLib::PluginStream& _s); 53 void getConfig(pluginLib::PluginStream& _s) const; 54 55 uint32_t getPartCount() const 56 { 57 return static_cast<uint32_t>(m_parts.size()); 58 } 59 60 void clear(const uint32_t _part); 61 void copy(uint8_t _target, uint8_t _source); 62 63 private: 64 PatchManager& m_patchManager; 65 std::array<PartState, 16> m_parts; 66 }; 67 }